2016-10-02 14 views
1

class Rのライブラリにあるknn関数を使用しようとしています。 "train"は "class"と同じ長さではないというエラーが表示されます。K-最近隣 -

列車とクラスの長さをそれぞれ印刷すると、電車の長さは100(必要に応じて)、クラスの長さは2(期待通り)であることがわかりました。私が正しく理解していれば、clすなわちクラスは、ラベルの因子分解されたベクトルを意味します。私のラベルはちょうど "オレンジ"と "青"です。ドキュメントの例に従ったが、エラーは続く。私のコードに明白に間違ったものがありますか?どんな助けもありがとうございます。

library(class) 

x <- runif(100, 1, 100) 
y <- runif(100, 1, 100) 
train.df <- data.frame(x, y) 

x.test <- runif(100, 1, 100) 
y.test <- runif(100, 1, 100) 
test.df <- data.frame(x.test, y.test) 

cl <- factor(c(rep("orange", 100), rep("blue", 100))) 

knn(train.df, test.df, cl, k=3, prob=TRUE) 
+1

clは200要素長です。代わりに各クラスに対して 'rep'を50回呼び出してみてください。 –

+0

それはトリックでした。あなたが答えとしてあなたのコメントを投稿したいのであれば、私はそれをチェックすることができます。ありがとう! – KingDan

+0

R /エラーメッセージの使用方法に関する質問はここでは解説していません。これは[SO]のトピックになります。あなたが待つことができるなら、私たちはあなたのためにそれを移行します。 – gung

答えて

0

clの長さが200エレメントです。代わりに各クラスに対してrepを50回呼び出してみてください。

library(class) 

x <- runif(100, 1, 100) 
y <- runif(100, 1, 100) 
train.df <- data.frame(x, y) 

x.test <- runif(100, 1, 100) 
y.test <- runif(100, 1, 100) 
test.df <- data.frame(x.test, y.test) 

cl <- factor(c(rep("orange", 50), rep("blue", 50))) 

knn(train.df, test.df, cl, k=3, prob=TRUE) 
関連する問題