QDA (Quadratic Discriminant Analysis)에서 트레이닝 및 테스트 데이터의 길이를 정확히 유지해야합니까? 그렇지 않다면, 혼돈 매트릭스을 어떻게 찾을 수 있습니까?QDA | 훈련 및 시험 데이터 세트의 길이 | 교육 및 테스트 데이터에서 데이터를 분리하는 방법은 무엇입니까?
여기에 psuedo data입니다.
다른 길이의 교육 데이터 및 테스트 데이터 세트를 유지하면 오류가 발생합니다 (R Studio 사용). "테이블의 오류 (pred, true) : 모든 인수의 길이가 동일해야합니다".
na와 omit()를 사용하여 NAs를 제거하려고했으나 pred와 true는 물론 두 데이터 세트에서 모두 제거되었습니다. qda()에 대해 na.action = na.exclude를 사용했지만 작동하지 않았습니다.
정확히 절반으로 데이터 세트를 나눈 후; 훈련의 절반과 시험의 절반; 그것은 na.omit() 후 에 pred와 true에 완벽하게 작동했습니다.
다음 두 가지 방법 중 하나에 사용되는 코드는 다음과 같습니다. 접근 방식 2에서 데이터를 반으로 나누면 완벽하게 작동합니다.
#Approach 1: divide data age-wise
train <- vif_data$Age < 30
# there are around 400 values passing (TRUE) above condition and around 50 failing (FALSE)
train_vif <- vif_data[train,]
test_vif <- vif_data[!train,]
#taking QDA
zone_qda <- qda(train_vif$Awareness~train_vif$Zone, na.action = na.exclude)
#compare QDA against test data
zone_pred <- predict(zone_qda, test_vif)
#omitting nulls
pred <- na.omit(zone_pred$class)
true <- na.omit(test_vif$Awareness)
length(pred) # result: 399
length(true) # result: 47
#that's where it throws error: "Error in table(zone_pred$class, train_vif) : all arguments must have the same length"
zone_aware <- table(zone_pred$class, train_vif)
# OR
zone_aware <- table(pred, true)
accur <- mean(zone_pred$class==test_vif$Awareness)
###############################
#Approach 2: divide data into random halves
train <- splitSample(dataset = vif_data, div = 2, path = "./", type = "csv")
train_data <- read.csv("splitSample_s1.csv")
test_data <- read.csv("splitSample_s2.csv")
#taking QDA
zone_qda <- qda(train_vif$Awareness~train_vif$Zone, na.action = na.exclude)
#compare QDA against test data
zone_pred <- predict(zone_qda, test_vif)
#omitting nulls
pred <- na.omit(zone_pred$class)
true <- na.omit(test_vif$Awareness)
length(train_vif)
# this works fine
zone_aware <- table(zone_pred$class, train_vif)
# OR
zone_aware <- table(pred, true)
accur <- mean(zone_pred$class==test_vif$Awareness)
우리가 불평등 교육 및 테스트 데이터 집합으로 나누어 데이터 세트와 혼동 행렬을 가질 수있는 어떤 방법이 있는지 알고 싶습니다.
감사합니다.
감사합니다. Taylor. 테스트 데이터가 플러그인되어 있습니다(). "pred가 올바른 길이가 아님"이 무슨 뜻인지 말해 줄 수 있습니까? –
또한 도움이 될 수 있다면 위의 코드를 질문에 추가했습니다. –
훈련 데이터는 이와 같이 분할되지 않아야합니다. 그것은 무작위로 이루어져야합니다. 또한 당신이 어떤 데이터를 사용하고 있는지 알고 있다면 도움이 될 것입니다. – Taylor