2017-11-30 17 views
0
library(caret) 
irisFit1 <- knn3(Species ~ ., iris) 

irisFit2 <- knn3(as.matrix(iris[, -5]), iris[,5]) 

data(iris3) 
train <- rbind(iris3[1:25,,1], iris3[1:25,,2], iris3[1:25,,3]) 
test <- rbind(iris3[26:50,,1], iris3[26:50,,2], iris3[26:50,,3]) 
cl <- factor(c(rep("s",25), rep("c",25), rep("v",25))) 
> knn3Train(train, test, cl, k = 5, prob = TRUE) 
[1] "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "c" 
[27] "c" "v" "c" "c" "c" "c" "c" "v" "c" "c" "c" "c" "c" "c" "c" "c" "c" "c" "c" "c" "c" "c" "c" "c" "v" "c" 
[53] "c" "v" "v" "v" "v" "v" "c" "v" "v" "v" "v" "c" "v" "v" "v" "v" "v" "v" "v" "v" "v" "v" "v" 
attr(,"prob") 
       c s   v 
[1,] 0.0000000 1 0.0000000 
[2,] 0.0000000 1 0.0000000 
[3,] 0.0000000 1 0.0000000 
[4,] 0.0000000 1 0.0000000 
[5,] 0.0000000 1 0.0000000 
[6,] 0.0000000 1 0.0000000 
    ... 

caret 패키지에서 knn3의 장난감 예제를 사용하고 있습니다. 마지막 호출이 예측 된 확률 목록을 반환하는 것처럼 보입니다. s에 대해 예상 확률이 1 인 열은 예측 된 종이 s임을 나타냅니다. c의 예상 확률이 0.2 인 다른 행과 종 v의 경우 0.8이 있습니다. 이 경우 예측 된 결과는 무엇입니까? 예측 된 확률이 높기 때문에 종 v을 추측하고 있습니까?R : KNN의 예측 정확도는 어떻게 계산합니까?

knn 모델의 적합성을 신속하게 평가할 수있는 함수 호출이 있습니까?

답변

0

첫째, 저장하여 예측 :

cm = as.matrix(table(Actual = cl, Predicted = fit)) 

은 이제 정확도 계산할 수 있습니다 :

sum(diag(cm))/length(cl) 

또는 다른 임의의 수 그리고

fit=knn3Train(train, test, cl, k = 5, prob = TRUE) 

, 당신은 혼란 매트릭스를 필요 성능 측정 : https://en.wikipedia.org/wiki/Precision_and_recall