如何在Python及sklearn.svm.SVC中获取模型预测的置信度?
查看SVM模型预测的概率或置信度
有两种方式可以获取SVM预测的相关置信信息,具体如下:
1. 获取预测概率
要让SVM输出预测概率,需要在初始化SVC时开启probability=True参数,模型会在训练时额外拟合一个概率估计器。之后可以调用predict_proba()方法得到每个样本属于各类别的概率值。
修改你的训练函数如下:
def svc_training(X, y): # 创建支持向量分类器,开启概率估计 clf = SVC(C=1, probability=True) # 使用训练数据拟合分类器 clf.fit(X, y) return clf
使用示例:
# 训练模型 model = svc_training(X_train, y_train) # 获取测试样本的预测概率 probabilities = model.predict_proba(X_test) # probabilities是一个二维数组,每行对应一个样本,每列对应一个类别的概率
2. 获取预测置信度(基于超平面距离)
如果不需要概率,只是想得到模型对预测结果的置信程度,可以使用decision_function()方法。该方法返回每个样本到分类超平面的距离,绝对值越大,说明模型对该预测的置信度越高。
使用示例:
# 获取测试样本的决策函数值(置信度相关) confidence_scores = model.decision_function(X_test) # 二分类场景下,正值表示预测为正类,负值表示预测为负类,绝对值越大置信度越高 # 多分类场景下,每行对应一个样本,每列对应一个类别的距离值
内容的提问来源于stack exchange,提问作者kaan46
相关产品推荐
相关产品推荐

