Pour une compétition DS, j'utilisais SVM pour faire une classification binaire. Ici, tdata, vdata ont tous deux 256 caractéristiques. tlabels, vlabels ont tous deux des dimensions n_samples x 1 et leurs valeurs uniques sont 0/1. Maintenant, selon les règles de la compétition, à la place des étiquettes, nous devons soumettre le score de probabilité (entre 0 et 1) et l'AUC sera utilisé pour décider du classement. Je suis assez nouveau pour les SVM et Sklearn. Tout pointeur sur la façon de convertir ce code pour générer des scores de probabilité et AUC, sera d'une grande aide.Prédiction de l'étiquette à la prédiction de score de probabilité/AUC en utilisant scikit-learn SVM
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))
Sortie:
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
Avez-vous regardé [sklearn.metrics.auc] (http://scikit-learn.org/stable/modules/generated/sklearn.metrics.auc.html) – shanmuga
Oui, mais comment puis-je modifier le classificateur pour générer des scores de probabilité entre 0 et 1? – dharm0us
Pour les probabilités j'ai posté une réponse, pour l'AUC sklearn.metrics.auc devrait fonctionner bien – sera