我有一个用于PNN的R iris数据集。 3种物种从0级到3级重新编码如下:0是setosa,1是杂色,2是virginica。训练集是75%
Q1。我不理解函数pred_pnn
,如果有人擅长R,也许你可以解释它是如何工作的
Q2。测试集或预测的输出如下所示,我不理解输出,因为它应该接近0,1,2
data = read.csc("c:/iris-recoded.csv" , header = T)
size = nrow(data)
length = ncol(data)
index <- 1:size
positions <- sample(index, trunc(size * 0.75))
training <- data[positions,]
testing <- data[-positions,1:length-1]
result = data[-positions,]
result$actual = result[,length]
result$predict = -1
nn1 <- smooth(learn(training), sigma = 0.9)
pred_pnn <- function(x, nn){
xlst <- split(x, 1:nrow(x))
pred <- foreach(i = xlst, .combine = rbind) %dopar% {
data.frame(prob = guess(nn, as.matrix(i))$probabilities[1], row.names =NULL)
}
}
print(pred_pnn(testing, nn1))
prob
1 1.850818e-03
2 9.820653e-03
3 6.798603e-04
4 7.421435e-03
5 2.168817e-03
6 3.277354e-03
7 6.541173e-03
8 1.725332e-04
9 2.081845e-03
10 2.491388e-02
11 7.679823e-03
12 1.291811e-03
13 2.197234e-06
14 1.316366e-03
15 1.421219e-05
16 4.639239e-05
17 3.671907e-04
18 1.460001e-04
19 4.382849e-05
20 2.387543e-05
21 1.011196e-05
22 2.719982e-04
23 4.445472e-04
24 1.281762e-04
25 5.931106e-09
26 9.741870e-08
27 9.236434e-09
28 8.384690e-08
29 3.311667e-07
30 6.045306e-11
31 2.949265e-08
32 2.070014e-10
33 8.043735e-06
34 2.136666e-08
35 5.604398e-08
36 2.455841e-07
37 3.445977e-07
38 7.314647e-07
答案 0 :(得分:2)
我假设你正在使用pnn
包。 ?guess
的文档会让我们相信它与predict
对其他模型的作用类似。换句话说,它预测观察属于哪个类。其他所有内容都用于记账。为什么你只获得概率?因为编写函数的人通过提取guess(x)$probabilities
并仅返回该函数来实现这一点。如果您查看原始输出,您还可以将预测的类隐藏在$category
列表元素中。