web-dev-qa-db-fra.com

Comment obtenir le score de confiance d'un classificateur pour une prédiction dans sklearn?

Je voudrais obtenir un score de confiance de chacune des prédictions qu'il fait, montrant à quel point le classificateur est sûr que sa prédiction est correcte.

Je veux quelque chose comme ça:

Dans quelle mesure le classificateur est-il sûr de sa prédiction?

Classe 1: 81% que c'est la classe 1
Classe 2: 10%
Classe 3: 6%
Classe 4: 3%

Échantillons de mon code:

features_train, features_test, labels_train, labels_test = cross_validation.train_test_split(main, target, test_size = 0.4)

# Determine amount of time to train
t0 = time()
model = SVC()
#model = SVC(kernel='poly')
#model = GaussianNB()

model.fit(features_train, labels_train)

print 'training time: ', round(time()-t0, 3), 's'

# Determine amount of time to predict
t1 = time()
pred = model.predict(features_test)

print 'predicting time: ', round(time()-t1, 3), 's'

accuracy = accuracy_score(labels_test, pred)

print 'Confusion Matrix: '
print confusion_matrix(labels_test, pred)

# Accuracy in the 0.9333, 9.6667, 1.0 range
print accuracy



model.predict(sub_main)

# Determine amount of time to predict
t1 = time()
pred = model.predict(sub_main)

print 'predicting time: ', round(time()-t1, 3), 's'

print ''
print 'Prediction: '
print pred

Je soupçonne que j'utiliserais la fonction score (), mais je semble continuer à l'implémenter correctement. Je ne sais pas si c'est la bonne fonction ou non, mais comment obtenir le pourcentage de confiance de la prédiction d'un classificateur?

15
user3377126

Selon le documentation SVC , il semble que vous devez changer la façon dont vous construisez le SVC:

model = SVC(probability=True)

puis utilisez la méthode Predict_Proba:

class_probabilities = model.predict_proba(sub_main)
19
Justin Peel

Pour les estimateurs qui implémentent la méthode predict_proba(), comme l'a suggéré Justin Peel, vous pouvez simplement utiliser predict_proba() pour produire une probabilité sur votre prédiction.

Pour les estimateurs qui n'implémentent pas la méthode predict_proba(), vous pouvez construire vous-même un intervalle de confiance en utilisant bootstrap concept (calculez à plusieurs reprises vos estimations ponctuelles dans de nombreux sous-échantillons).

Faites-moi savoir si vous avez besoin d'exemples détaillés pour démontrer l'un de ces deux cas.

7
Jianxun Li