Für eine DS-Konkurrenz verwendete ich SVM, um eine binäre Klassifizierung durchzuführen. Hier haben tdata, vdata beide 256 Features. tlabels, vlabels haben beide Dimensionen n_samples x 1 und ihre eindeutigen Werte sind 0/1.Etikettenvorhersage zur Wahrscheinlichkeitsvorhersage/AUC mit scikit-learn SVM
Nun müssen wir gemäß den Wettbewerbsregeln anstelle von Labels einen Wahrscheinlichkeitswert (zwischen 0 und 1) angeben, und AUC wird verwendet, um das Ranking zu bestimmen.
Ich bin ziemlich neu in SVMs und Sklearn. Hinweise, wie Sie diesen Code konvertieren können, um Wahrscheinlichkeitswerte und AUC zu generieren, sind sehr hilfreich.
Code:
classifier=svm.SVC(gamma=g,C=c,kernel='rbf',class_weight='balanced')
classifier.fit(tdata, tlabels)
expected = vlabels
predicted = classifier.predict(vdata)
print("Classification report for classifier %s:\n%s\n"
% (classifier, metrics.classification_report(expected, predicted)))
cm = metrics.confusion_matrix(expected, predicted)
accuracy = (cm[0,0]+cm[1,1])*100.0/sum(sum(cm))
print("accuracy = "+str(accuracy))
Ausgang:
Classification report for classifier SVC(C=1.0, cache_size=200, class_weight='balanced', coef0=0.0,
decision_function_shape=None, degree=3, gamma=0.00020000000000000001,
kernel='rbf', max_iter=-1, probability=False, random_state=None,
shrinking=True, tol=0.001, verbose=False):
precision recall f1-score support
0.0 0.93 0.88 0.90 1881
1.0 0.92 0.95 0.94 2686
avg/total 0.92 0.92 0.92 4567
accuracy = 92.3144296037
Haben Sie betrachtet [sklearn.metrics.auc] (http://scikit-learn.org/stable/modules/generated/sklearn.metrics.auc.html) – shanmuga
Ja, aber wie ändere ich den Klassifikator, um Wahrscheinlichkeitswerte zwischen 0 und 1 auszugeben? – dharm0us
Für die Wahrscheinlichkeiten habe ich eine Antwort geschrieben, für die AUC sklearn.metrics.auc sollte gut funktionieren – sera