Как получить оценку доверия классификатора для прогноза в sklearn?
Я хотел бы получить оценку уверенности каждого из прогнозов, которые он делает, показывая, насколько уверен классификатор в своем прогнозе, что он правильный.
Я хочу что-то вроде этого:
насколько уверен классификатор в своем предсказании?
класс 1: 81% , что это класс 1
Класс 2: 10%
Класс 3: 6%
4 класс: 3%
примеры моего кода:
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
Я подозреваю, что я бы использовал счет() функция, но я, кажется, продолжаю правильно ее реализовывать. Я не знаю, правильная это функция или нет, но как получить процент доверия прогноза классификатора?
2 ответов
на документация SVC, похоже, вам нужно изменить способ построения SVC:
model = SVC(probability=True)
а затем используйте метод predict_proba:
class_probabilities = model.predict_proba(sub_main)
для тех оценок, реализующих predict_proba()
метод, как предложил Джастин пил, вы можете просто использовать predict_proba()
для получения вероятности вашего предсказания.
для тех оценок, которые не реализуют predict_proba()
метод, вы можете построить доверительный интервал самостоятельно, используя концепцию bootstrap (неоднократно вычислять оценки точек во многих суб-образцах).
Дайте мне знать, если вам нужны какие-либо подробные примеры, чтобы продемонстрировать любой из этих двух случаев.