2017-05-24 7 views
0

RでKNNを行う方法を学習しようとしていて、パッケージnycflights13のフライトデータセットで練習しています。フライトデータセットのKNNエラー

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) 
+1

理解していますか? 2つの異なるデータフレームがあります。 '> str(flights.training)'を試してください。 クラス 'tbl_df'、 'tbl'、 'data.frame':\t 219806 obs。 $のdep_time:int型517 533 542 544 554 555 557 557 558 558 ... $のarr_time:int型830 850 923 1004 740 913 709 838 753 853 ... '> STR(flights.test)' 2つの変数の クラス 'tbl_df'、 'tbl'、 'data.frame':\t 108257 obs。 2変数のうち $ dep_time:int 554 558 558 559 608 613 615 627 629 629 ... $ arr_time:int 812 849 923 702 807 925 1039 1018 824 721 ... –

+0

ありがとうございました。残念ながら私は以前と同じくらい混乱しています。申し訳ありませんが、私はこのようなもので少し遅いです。 – madhatter5

+0

私はclassframeが決して使用されないことを言及する必要があります。私は前にそれを使用したが、その後事を変えた。 – madhatter5

答えて

1

ここで電車を分割コードです:私は「電車」と「クラス」は、異なる長さを持っている

私のコードは

を言って以下のコードを実行しているエラーを取得しますパーセンテージに基づくテストセット。 2つのサブセットを別の方法で分割したい場合は、これから作業することができますが、それが機能することが証明されます。

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(predictions) 
Factor w/ 209 levels "80","94","96",..: 121 159 18 54 207 18 94 55 159 136 ... 
+0

Ahhhhh。ありがとう! – madhatter5

関連する問題