R 航班数据集的KNN错误

R 航班数据集的KNN错误,r,dataframe,random,machine-learning,R,Dataframe,Random,Machine Learning,我正在努力学习如何在R中使用KNN,并且正在使用nycflights13软件包中的航班数据集进行练习。我在运行下面的代码时出错 “火车”和“等级”有不同的长度 我的代码: library(nycflights13) library(class) deparr <- na.omit(flights[c(4, 7, 16)]) classframe <- deparr[3] flights %>% ggvis(~dep_time, ~arr_time, fill = ~di

我正在努力学习如何在R中使用KNN,并且正在使用nycflights13软件包中的航班数据集进行练习。我在运行下面的代码时出错

“火车”和“等级”有不同的长度

我的代码:

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)
库(nycflights13)
图书馆(班级)
取消对%layer_points()的阵列
种子集(1234)

ind这是根据百分比划分列车和测试集的代码。如果您想以不同的方式拆分这两个子集,您应该能够从中工作,但这证明了它是有效的

deparr <- na.omit(flights[c(4, 7, 16)])
set.seed(1234)

# prepare to divide up the full dataset into two groups, 65%/35%
n <- nrow(deparr)
train_n <- round(0.65 * n)

# randomize our data 
deparr <- deparr[sample(n)]

# split up the actual data. We will use these as inputs to knn
flights.train <- deparr[1:train_n, ]
flights.test <- deparr[(train_n + 1):n, ]

# target variable, $distance, is in column 3, so exclude from train and test
predictions <- knn(train = flights.train[, 1:2], test = flights.test[, 1:2], cl = flights.train$distance, k = 10)

你明白你为什么要做你正在做的事情吗?您有两个不同的数据帧。尝试使用str(flights.training)
class'tbl_df'、'tbl'和'data.frame':219806 obs。共2个变量:$dep_time:int 517 533 542 544 554 555 557 557 558 558…$到达时间:int 830 850 923 1004 740 913 709 838 753 853<代码>>str(flights.test)class'tbl_df'、'tbl'和'data.frame':108257 obs。共2个变量:$dep_time:int 554 558 558 559 608 613 615 627 629 629…$到达时间:国际电话812 849 923 702 807 925 1039 1018 824 721…谢谢肖恩。不幸的是,我仍然像以前一样困惑。很抱歉,我在这方面有点慢。我应该提到的是,classframe从未被使用过。我以前用过,但后来改变了。谢谢
> str(predictions)
Factor w/ 209 levels "80","94","96",..: 121 159 18 54 207 18 94 55 159 136 ...