Sklearn 预测置信度获取

在使用 Sklearn 库进行文本分类时,模型会对输入的文本片段做出预测,并将其归类为不同的类别。但有时候,模型对某些预测并不确定,或者说预测的置信度不高。我们需要一种方法来提取预测的相对置信度,以进行进一步的分析和处理。
在这里插入图片描述

  1. 解决方案:

Sklearn 中的 predict_proba 方法可以帮助我们解决这个问题。它可以输出一个包含多个概率值的数组,每个值代表模型对该文本片段属于各个类别的置信度。我们可以使用这些概率值来评估预测的可靠程度。

具体来说,predict_proba 方法返回一个形状为 (n_samples, n_classes) 的数组,其中 n_samples 是要进行预测的文本片段数量,n_classes 是类别数量。数组中的每个元素代表模型对该文本片段属于对应类别的置信度。

例如,如果我们使用 predict_proba 方法对一个包含两个类别的文本分类模型进行预测,则返回的数组可能如下所示:

[[0.99, 0.01],
 [0.60, 0.40],
 [0.20, 0.80]]

在这个例子中,第一行的第一个值表示模型对第一个文本片段属于第一个类别的置信度为 99%,而对第二个类别的置信度为 1%。第二行的第一个值表示模型对第二个文本片段属于第一个类别的置信度为 60%,而对第二个类别的置信度为 40%。第三行的第一个值表示模型对第三个文本片段属于第一个类别的置信度为 20%,而对第二个类别的置信度为 80%。

我们可以使用这些置信度值来评估预测的可靠程度。例如,如果一个文本片段的置信度值很高,则表明模型对该预测非常有信心。而如果一个文本片段的置信度值很低,则表明模型对该预测不太确定。

代码例子:

import sklearn
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.naive_bayes import BernoulliNB

# 数据集
X_train = ["Sentence I know belongs to Subject A", "Another sentence that describes Subject A", "A sentence about Subject B", "Another sentence about Subject B"...], etc
Y_train = ["Subject A", "Subject A", "Subject B", "Subject B", ...], etc.
predict_these_X = ["Some random sentence", "Another sentence", "Another sentence again", ...] etc.

# 特征提取
count_vect = CountVectorizer()
tfidf_transformer = TfidfTransformer()

X_train_counts = count_vect.fit_transform(X_train)
X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts)

X_new_counts = count_vect.transform(predict_these_X)
X_new_tfidf = tfidf_transformer.transform(X_new_counts)

# 模型训练
estimator = BernoulliNB()
estimator.fit(X_train_tfidf, Y_train)

# 预测
predictions = estimator.predict(X_new_tfidf)

# 获取预测置信度
confidence_scores = estimator.predict_proba(X_new_tfidf)

# 输出预测结果和置信度
for i, prediction in enumerate(predictions):
    print("Prediction:", prediction)
    print("Confidence scores:", confidence_scores[i])

通过运行这段代码,我们可以同时获得预测结果和预测置信度。我们可以使用置信度值来评估预测的可靠程度,并进行进一步的分析和处理。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值