【问题标题】:knn train and class have different lengthsknn train 和 class 有不同的长度
【发布时间】:2020-02-07 01:49:12
【问题描述】:

NN 模型来预测新数据,但是报错说: "'train' 和 'class' 有不同的长度"

有人可以复制并解决这个错误吗?

weather <- c(1, 1, 1, 0, 0, 0)
temperature <- c(1, 0, 0, 1, 0, 0)
golf <- c(1, 0, 1, 0, 1, 0)
df <- data.frame(weather, temperature, golf)
df_new <- data.frame(weather = c(1,1,1,1,1,1,1,1,1), temp = c(0,0,0,0,0,0,0,0,0), sunnday= c(1,1,1,0,1,1,1,0,0))
pred_knn <- knn(train=df[, c(1,2)], test=df_new, cl=df$golf, k=1)

非常感谢!

【问题讨论】:

    标签: r machine-learning knn


    【解决方案1】:

    R 中的 knn 函数要求训练数据只包含自变量,因为因变量在“cl”参数中单独调用。更改下面的行将修复此特定错误。

    pred_knn <- knn(train=df[,c(1,2)], test=df_new, cl=df$golf, k=1)
    

    但是,请注意,运行上述行会引发另一个错误。由于 knn 计算观测值之间的欧几里得距离,因此它要求所有自变量都是数字的。这些页面包含有用的相关信息。我建议对这个特定的数据集使用不同的分类器。

    https://towardsdatascience.com/k-nearest-neighbors-algorithm-with-examples-in-r-simply-explained-knn-1f2c88da405c https://discuss.analyticsvidhya.com/t/how-to-resolve-error-na-nan-inf-in-foreign-function-call-arg-6-in-knn/7280/4

    希望这会有所帮助。

    【讨论】:

    • 谢谢尼克,我更新了我的问题。所以我想我的数据中的问题是, df 的变量向量与 df_new 的变量向量不匹配,这会产生一些麻烦。然而,k 折交叉验证有效。也许我猜是运气。如果我错了,请纠正我。
    • 嘿@stefan485,我们的想法是训练和测试数据帧都应该具有相同的架构和变量才能工作。以前不是这种情况,因为您也将因变量包含在火车数据框中。 R 中的 knn 函数使用“cl”参数来跟踪因变量,因此它不需要是训练数据帧的一部分。
    猜你喜欢
    • 1970-01-01
    • 2017-02-21
    • 2020-04-29
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2016-08-28
    相关资源
    最近更新 更多