1
在从randomForest获得接近矩阵后,对于数据集中的每一行/观测,我想找到k个最近点(不包括观测本身,或,等价地,接近矩阵的对角线元素),然后是它们的真实类别标签。我知道如何找到矩阵中每行的最大值或最小值的索引,但我不知道如何对R进行编程以排除对角线元素,并按行确定k个最大的项。从R中的接近矩阵按行获得k阶统计
> set.seed(1234)
> d <- iris[sample(nrow(iris), 6, replace = FALSE),]
> iris.rf <- randomForest(Species ~ ., data=d, ntree=2000, proximity=TRUE, oob.prox=TRUE)
> m <- iris.rf$proximity
> m
18 93 91 92 126 149
18 1.0000000 0.7486911 0.7653631 0.7500000 0.2620690 0.4723926
93 0.7486911 1.0000000 0.7836257 0.7329545 0.5497076 0.2763819
91 0.7653631 0.7836257 1.0000000 0.6795580 0.5371429 0.2289157
92 0.7500000 0.7329545 0.6795580 1.0000000 0.3107345 0.4535519
126 0.2620690 0.5497076 0.5371429 0.3107345 1.0000000 0.8115942
149 0.4723926 0.2763819 0.2289157 0.4535519 0.8115942 1.0000000
> which(m[1,] == max(m[1,]), arr.ind = TRUE)
18
1
SO是关于帮助。请写一个可重现的例子,其中包括您的数据集的子集和您一直在处理的代码。 – MLavoie