KNN 在航班数据集上的错误

我正在尝试学习如何在 R 中使用 KNN,并在 nycflights13 包中的航班数据集上进行练习。运行下面的代码时,我得到了一个错误,错误信息如下:

‘train’ 和 ‘class’ 的长度不同

我的代码如下:

library(nycflights13)library(class)deparr <- na.omit(flights[c(4, 7, 16)])classframe <- deparr[3]flights %>% ggvis(~dep_time, ~arr_time, fill = ~distance) %>% layer_points()set.seed(1234)ind <- sample(2, nrow(deparr), replace=TRUE, prob=c(0.67, 0.33))flights.training <- deparr[ind==1, 1:2]flights.test <- deparr[ind==2, 1:2]flights.trainlabels <- deparr[ind==1, 3]flights.testlabels <- deparr[ind==2, 3]predictions <- knn(train = flights.training, test = flights.test, cl = flights.trainlabels[,1], k = 3)

回答:

这里是根据百分比划分训练集和测试集的代码。如果你想以不同的方式划分这两个子集,你可以从这个代码出发进行修改,但这证明了它是有效的。

deparr <- na.omit(flights[c(4, 7, 16)])set.seed(1234)# 准备将完整数据集分为两组,65%/35%n <- nrow(deparr)train_n <- round(0.65 * n)# 随机化我们的数据 deparr <- deparr[sample(n)]# 分割实际数据。我们将这些作为 knn 的输入flights.train <- deparr[1:train_n, ]flights.test <- deparr[(train_n + 1):n, ]# 目标变量,$distance,在第3列,所以从训练集和测试集中排除predictions <- knn(train = flights.train[, 1:2], test = flights.test[, 1:2], cl = flights.train$distance, k = 10)

这段代码运行后,我得到的结果如下:

> str(predictions)Factor w/ 209 levels "80","94","96",..: 121 159 18 54 207 18 94 55 159 136 ...

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注