如何获得分类器在 sklearn 中进行预测的置信度分数?
How to get a classifier's confidence score for a prediction in sklearn?
我想获得它所做的每个预测的置信度分数,显示 classifier 对其预测正确性的确定程度。
我想要这样的东西:
classifier 的预测有多确定?
Class 1: 81% 这是 class 1
Class2: 10%
Class3: 6%
Class 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
我怀疑我会使用 score() 函数,但我似乎一直在正确地实现它。我不知道这是否是正确的函数,但是如何获得 classifier 预测的置信度百分比?
根据 SVC documentation,您似乎需要更改构建 SVC 的方式:
model = SVC(probability=True)
然后使用predict_proba方法:
class_probabilities = model.predict_proba(sub_main)
对于那些实施 predict_proba()
方法的估算器,如 Justin Peel 建议的那样,您可以只使用 predict_proba()
来生成预测概率。
对于那些没有实现predict_proba()
方法的估计器,您可以使用bootstrap概念自行构造置信区间(在许多子样本中重复计算您的点估计)。
如果您需要任何详细示例来演示这两种情况,请告诉我。
我想获得它所做的每个预测的置信度分数,显示 classifier 对其预测正确性的确定程度。
我想要这样的东西:
classifier 的预测有多确定?
Class 1: 81% 这是 class 1
Class2: 10%
Class3: 6%
Class 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
我怀疑我会使用 score() 函数,但我似乎一直在正确地实现它。我不知道这是否是正确的函数,但是如何获得 classifier 预测的置信度百分比?
根据 SVC documentation,您似乎需要更改构建 SVC 的方式:
model = SVC(probability=True)
然后使用predict_proba方法:
class_probabilities = model.predict_proba(sub_main)
对于那些实施 predict_proba()
方法的估算器,如 Justin Peel 建议的那样,您可以只使用 predict_proba()
来生成预测概率。
对于那些没有实现predict_proba()
方法的估计器,您可以使用bootstrap概念自行构造置信区间(在许多子样本中重复计算您的点估计)。
如果您需要任何详细示例来演示这两种情况,请告诉我。