python - 使用 SciKit Learn 进行机器学习的信心得分?
问题描述
我遵循了一个将 SciKit Learning 的机器学习应用于面部识别的示例。 https://scikit-learn.org/stable/auto_examples/applications/plot_face_recognition.html#sphx-glr-auto-examples-applications-plot-face-recognition-py
我已经能够成功地使示例适应我自己的数据。但是,我迷失了一点:
在准备好数据、训练模型之后,最终你会得到以下代码: Y_pred = clf.predict(X_test_pca)
这会产生一个预测向量,每个人脸一个。我想不通的是如何获得任何与之对应的置信度测量。
分类方法是一种强制选择,因此传入的每个人脸都必须被分类为已知人脸之一,即使它甚至不接近。
如何获得每张脸的数字,以反映结果与已知脸的匹配程度?
解决方案
看来您正在寻找估算器的.predict_proba()
方法。scikit-learn
它返回可能结果的概率,而不是单个预测。
您所指的示例是使用SVC
. 关于此功能,它有点特别,因为它指出:
该模型需要在训练时计算概率信息:适合
probability
设置为 True 的属性。
因此,如果您使用与示例中相同的模型,请使用以下命令对其进行实例化:
SVC(kernel='rbf', class_weight='balanced', probability=True)
并使用.predict_proba()
而不是.predict()
:
y_pred = clf.predict_proba(X_test_pca)
这将返回一个形状数组(n_samples, n_classes),即每个样本的每个类的概率。k
然后可以通过调用来访问类的概率y_pred[k]
。
推荐阅读
- php - 如何通过 Jira Cloud 中的 REST API 创建问题?
- javascript - 为什么 jquery 在 Angular 7 项目中重新加载一次后可以工作?
- java - 如何按对象特定变量的字母顺序将对象添加到数组列表
- javascript - 相同的路由隐藏组件问题
- javascript - jQuery简单价格*多个项目的总数量
- async-await - mocha async/await 测试因超时而失败
- jenkins - 已触发参数化远程作业,但控制台显示失败
- typescript - 如何使用函数重载实现双向映射函数?
- openedx - 打开 edX 多站点设置
- android - Rails 应用程序总是向 Android 返回“无法处理的实体”