mindist [l] <-ndist [l]中的错误:在下标分配中不允许使用NA,而在R

问题描述

我被这个错误困扰了很长时间。 我正在尝试使用R中mda包中的MDA函数。 在将模型拟合到数据上之后,在尝试对训练数据本身进行预测时遇到以下错误(对测试数据进行预测时出现相同的错误)

> Error in mindist[l] <- ndist[l]: NAs are not allowed in subscripted assignments

该错误可追溯到该函数的predict方法。

经过大量调试后,我无法理解错误的根本原因。 以下是有关我的数据的一些统计信息:

  1. 由于我在python中工作并想使用此特定的R函数,因此我正在python中使用rpy2接口调用该函数
  2. 数据集不是很大,大约有200行和500-600列,我知道特征已经超出了样本数量,但是问题似乎是独立的,因为误差来自于预测函数而不是训练时该模型,其次,我也测试了另一个数据集。行数的功能会产生相同的错误,最重要的是我还是在使用降维。
  3. 该错误仅出现在特定的配置上:当我在训练前不缩放输入数据时。虽然,当我缩放数据时,错误消失了。
  4. 错误行-错误是预测方法中的第二行。
    mda_clf = r['mda'](formula="Class~.",data=Dataset,method=r['polyreg'] )

    training_pred = r['predict'](mda_clf,X_train)
  1. 我已经检查了很多次,我的数据不包含任何NA,在将数据提供给预测函数以手动查看它之前,我已经打印了数据,并且还使用函数来检查NA。

我很难理解错误的含义,我的数据不包含任何NA值,在缩放数据时,相同的功能也起作用。但是模型在两种情况下都可以训练。

任何帮助将不胜感激。

解决方法

我想更新一下,发现错误,实际上是在脚本的某个点X_train上,该错误显然应该是浮点数矩阵,但被错误地转换为字符串类型。例如,如果X_train的行应为[0.123,0.456,0.542],则会将其转换为['0.123','0.456','0.542'],其中值将转换为字符串类型。 因此,在错误出现的下一行

training_pred = r['predict'](mda_clf,X_train)

我的模型无法识别任何值,因为没有一个是浮点型的,因此会出现错误。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...