K-NN 분류를 계산하고 아래로 예측 도착합니다 : 예측에 대한멀티 클래스 혼란 행렬은 장난감 데이터를 사용하여-의 클래스 오류 내가 시도
actual <- c(rep('A1',12), rep('A2',12), rep('A3',7), rep('A4',12), rep('B1',11), rep('B2',17), rep('C1',15))
prediction <- c('A1','A1','A1','A1','A1','A3','A4','A4','B1','B2','C1','C1',
'A2','A2','A2','A2','A2','A3','A4','A4','A4','B1','B1','C1',
'A1','A2','A3','A3','A3','A3','B2',
'A1','A1','A2','A2','A2','A4','A4','A4','A4','A4','A4','B1',
'A1','A2','A2','A4','B1','B1','B1','B2','B2','B2','B2',
'A1','A3','B1','B1','B1','B1','B2','B2','B2','B2','B2','B2','B2','B2','B2','C1','C1',
'A1','A1','A2','B2','B2','C1','C1','C1','C1','C1','C1','C1','C1','C1','C1')
기본 아이디어는 사용하여 달성 될 수 table()
는 같이
table(actual, prediction)
# prediction
# actual A1 A2 A3 A4 B1 B2 C1
# A1 5 0 1 2 1 1 2
# A2 0 5 1 3 2 0 1
# A3 1 1 4 0 0 1 0
# A4 2 3 0 6 1 0 0
# B1 1 2 0 1 3 4 0
# B2 1 0 1 0 4 9 2
# C1 2 1 0 0 0 2 10
매우 유익한 기능 caret::confusionMatrix()
있습니다.
caret::confusionMatrix(prediction, actual)
# Confusion Matrix and Statistics
#
# Reference
# Prediction A1 A2 A3 A4 B1 B2 C1
# A1 5 0 1 2 1 1 2
# A2 0 5 1 3 2 0 1
# A3 1 1 4 0 0 1 0
# A4 2 3 0 6 1 0 0
# B1 1 2 0 1 3 4 0
# B2 1 0 1 0 4 9 2
# C1 2 1 0 0 0 2 10
#
# Overall Statistics
#
# Accuracy : 0.4884
# 95% CI : (0.379, 0.5986)
# No Information Rate : 0.1977
# P-Value [Acc > NIR] : 1.437e-09
#
# Kappa : 0.3975
# Mcnemar's Test P-Value : NA
#
# Statistics by Class:
#
# Class: A1 Class: A2 Class: A3 Class: A4 Class: B1 Class: B2 Class: C1
# Sensitivity 0.41667 0.41667 0.57143 0.50000 0.27273 0.5294 0.6667
# Specificity 0.90541 0.90541 0.96203 0.91892 0.89333 0.8841 0.9296
# Pos Pred Value 0.41667 0.41667 0.57143 0.50000 0.27273 0.5294 0.6667
# Neg Pred Value 0.90541 0.90541 0.96203 0.91892 0.89333 0.8841 0.9296
# Prevalence 0.13953 0.13953 0.08140 0.13953 0.12791 0.1977 0.1744
# Detection Rate 0.05814 0.05814 0.04651 0.06977 0.03488 0.1047 0.1163
# Detection Prevalence 0.13953 0.13953 0.08140 0.13953 0.12791 0.1977 0.1744
# Balanced Accuracy 0.66104 0.66104 0.76673 0.70946 0.58303 0.7067 0.7981
나는 많은 하위 클래스가 다른 클래스에 속한다는 것을 관찰했다. 예를 들어, A1
, A2
, A3
, A4
은 A
클래스에 속합니다. 마찬가지로 B1
, B2
은 B
클래스에 속합니다. 클래스 내의 모든 서브 클래스를 동등하게 취급 한 후에 통계를 계산하고 싶습니다. Class 및 Out-Class 오류 내에서 비슷한 통계를 생성 할 수있는 함수가 있습니까?
참고 : 실제 응용 프로그램은 이와 유사하지 않으므로 하위 클래스에서 숫자를 제거한 솔루션을 제안하지 마십시오. 단순화 목적으로이 예제를 제공했습니다.
클래스와 하위 클래스 관계가 주어지면 해결책을 얻을 수 있습니까?
감사를 대답. 죄송합니다. 실제 데이터가 이와 유사하지 않으므로이 접근 방식을 사용하지 않도록 언급하는 것을 잊었습니다. 제안한 패턴의 데이터를 제거 할 수 없습니다. – Prradep
"if (class % in % c (subclass4, subclass4, subclass5))" – missuse
그러나 "if (class % in % c (subclass1, subclass2, subclass3) 여전히 클래스 내 오류 통계를 계산할 수는 없습니까? – Prradep