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?
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)
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.