あなたが説明したデータセットが、同じタイトルの有名な本に付属するElemStatLearnパッケージのスパムデータセットと (正確に) 一致することを考えると、これが実際に宿題であるかどうか疑問に思っています。その場合は問題ありませんが、質問に宿題タグを追加する必要があります。
ここにいくつかの指針があります。
関数のドキュメントにはknn.cv
、分類のベクトルを、k 個の最近傍の距離とインデックスと共に「属性」として返すと記載されています。だから私はこれを実行すると:
out <- knn.cv(spam[,-58],spam[,58],k = 10)
オブジェクトout
は次のようになります。
> head(out)
[1] spam spam spam spam spam email
Levels: email spam
参照する他の値は、属性として一種の「非表示」ですが、次を使用してそこにあることがわかりますstr
。
> str(out)
Factor w/ 2 levels "email","spam": 2 2 2 2 2 1 1 1 2 2 ...
- attr(*, "nn.index")= int [1:4601, 1:10] 446 1449 500 5 4 4338 2550 4383 1470 53 ...
- attr(*, "nn.dist")= num [1:4601, 1:10] 8.10e-01 2.89 1.50e+02 2.83e-03 2.83e-03 ...
これらの追加の属性には、次のような方法でアクセスできます。
nn.index <- attr(out,'nn.index')
nn.dist <- attr(out,'nn.dist')
これらのオブジェクトは両方とも最終的に 4601 x 10 の次元の行列になることに注意してください。これは、ドキュメンテーションによると、k = 10
最近傍のインデックス (行番号) とそれぞれの距離が記録されているためです。
table()
最後のビットについては、関数と同様に便利であることがわかるでしょうprop.table()
。