Ich versuche ein Modell mit BstTree-Methode zu trainieren und die Konfusionsmatrix auszudrucken. adverse_effects ist mein Klassenattribut.Konfusionsmatrix von bstTree-Vorhersagen, Fehler: 'Die Daten müssen einige Ebenen enthalten, die die Referenz überlappen.'
set.seed(1234)
splitIndex <- createDataPartition(attended_num_new_bstTree$adverse_effects, p = .80, list = FALSE, times = 1)
trainSplit <- attended_num_new_bstTree[ splitIndex,]
testSplit <- attended_num_new_bstTree[-splitIndex,]
ctrl <- trainControl(method = "cv", number = 5)
model_bstTree <- train(adverse_effects ~ ., data = trainSplit, method = "bstTree", trControl = ctrl)
predictors <- names(trainSplit)[names(trainSplit) != 'adverse_effects']
pred_bstTree <- predict(model_bstTree$finalModel, testSplit[,predictors])
plot.roc(auc_bstTree)
conf_bstTree= confusionMatrix(pred_bstTree,testSplit$adverse_effects)
Aber ich bekomme die Fehlermeldung 'Fehler bei confusionMatrix.default (pred_bstTree, testSplit $ adverse_effects): Die Daten einige Stufen enthalten, die den Verweis überlappen.'
max(pred_bstTree)
[1] 1.03385
min(pred_bstTree)
[1] 1.011738
> unique(trainSplit$adverse_effects)
[1] 0 1
Levels: 0 1
Wie kann ich dieses Problem beheben?
> head(trainSplit)
type New_missed Therapytypename New_Diesease gender adverse_effects change_in_exposure other_reasons other_medication
5 2 1 14 13 2 0 0 0 0
7 2 0 14 13 2 0 0 0 0
8 2 0 14 13 2 0 0 0 0
9 2 0 14 13 2 1 0 0 0
11 2 1 14 13 2 0 0 0 0
12 2 0 14 13 2 0 0 0 0
uvb_puva_type missed_prev_dose skintypeA skintypeB Age DoseB DoseA
5 5 1 1 1 22 3.000 0
7 5 0 1 1 22 4.320 0
8 5 0 1 1 22 4.752 0
9 5 0 1 1 22 5.000 0
11 5 1 1 1 22 5.000 0
12 5 0 1 1 22 5.000 0
Sieht aus, als ob Sie Regression nicht klassifizieren. Überprüfen Sie, ob adverse_effects als Faktor in Ihren Daten festgelegt ist. – phiver
Ja, es ist ein Faktor Phiver mit 0 und 1. Auch wenn ich nach der Konvertierung auf numerische vorhersagen bekomme ich den gleichen Fehler – SaikiHanee
Versuchen Sie, ein Beispiel für Ihre Daten hinzuzufügen. Es ist schwer zu erkennen, wo das Problem liegt. – phiver