由 coercion 引入的 NAs 由 knn 中的 coercionError 引入

Posted

技术标签:

【中文标题】由 coercion 引入的 NAs 由 knn 中的 coercionError 引入【英文标题】:NAs introduced by coercionNAs introduced by coercionError in knn 【发布时间】:2021-06-02 14:04:36 【问题描述】:

当我执行这段代码时,我得到了关于 coercionNAs 的下一个错误:

data_test_pred <- knn(train = data_train, test = data_test,
                      cl = data_train_labels, k = 9)

NAs introduced by coercionNAs introduced by coercionError in knn(train = data_train, test = data_test, cl = data_train_labels,  : 
  NA/NaN/Inf in foreign function call (arg 6)

data_train_labels的变量是两个Levels

Factor w/ 2 levels "Prom","No prom": 1 1 1 1 1 1 1 1

【问题讨论】:

通常NAs introduced by coercion 是在函数需要数据类型但您输入另一个数据类型时给出的警告。在这种情况下,标签可能应该是character? 但是,如果您可以添加一个可重现的示例,包括加载包和模拟数据,那将非常有用。 你看过这篇文章了吗? ***.com/questions/16874038/error-with-knn-function 【参考方案1】:

在这种情况下,我猜这是由于字符变量转换为数字造成的。

通过将字符转换为数字,您将获得 NA。 您应该将字符变量设置为因子,然后设置为数值变量。

在这里学习:

I get the error NAs introduced by coercionNAs when trying to run kNN in R?

否则请张贴您的数据头。

【讨论】:

感谢您的回答,但是当我更改 numeric 的值时,我得到:Prom → 1 No Prom → 2 但我想得到:Prom → 1 No Prom → 0

以上是关于由 coercion 引入的 NAs 由 knn 中的 coercionError 引入的主要内容,如果未能解决你的问题,请参考以下文章

haribote graphic.c 由像素点阵转换显卡画面信息程序阅读注释

NAS系统收集

knn是啥意思

NAS与SAN存储

KNN算法的实现

KNN算法