Ich benutze Scikit, um eine logistische Regression auf Spam / Ham-Daten durchzuführen. X_train ist meine Trainingsdaten und y_train die Etiketten ('spam' oder 'ham') und ich habe meine LogisticRegression so trainiert:
%Vor%Wenn ich die Genauigkeiten für eine 10-fache Kreuzvalidierung erhalten möchte, schreibe ich einfach:
%Vor%Ich dachte, es wäre möglich, auch die Genauigkeiten und Rückrufe zu berechnen, indem man einfach einen Parameter auf diese Weise hinzufügt:
%Vor% Aber es ergibt sich ein ValueError
:
Handelt es sich um die Daten (sollte ich die Etiketten binarisieren?) oder ändern sie die Funktion cross_val_score
?
Vielen Dank im Voraus!
Um den Abruf und die Genauigkeit zu berechnen, müssen die Daten in der Tat binärisiert werden:
%Vor%Um weiter zu gehen, war ich überrascht, dass ich die Daten nicht binarisieren musste, wenn ich die Genauigkeit berechnen wollte:
%Vor%Nur weil die Genauigkeitsformel nicht wirklich Informationen darüber benötigt, welche Klasse als positiv oder negativ betrachtet wird: (TP + TN) / (TP + TN + FN + FP). Wir können tatsächlich sehen, dass TP und TN austauschbar sind, das gilt nicht für Rückruf, Präzision und f1.
Die oben gezeigte Syntax ist korrekt. Sieht aus wie ein Problem mit den Daten, die Sie verwenden. Die Beschriftungen müssen nicht binarisiert werden, solange sie keine fortlaufenden Zahlen sind.
Sie können die gleiche Syntax mit einem anderen Datensatz nachweisen:
%Vor%Ich habe hier das selbe Problem gefunden, und ich habe es mit
gelöst %Vor%Tags und Links python machine-learning scikit-learn logistic-regression precision