鉴于您描述的数据集(完全匹配)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()
.