首页 > 解决方案 > 使用 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)

这会产生一个预测向量,每个人脸一个。我想不通的是如何获得任何与之对应的置信度测量。

分类方法是一种强制选择,因此传入的每个人脸都必须被分类为已知人脸之一,即使它甚至不接近。

如何获得每张脸的数字,以反映结果与已知脸的匹配程度?

标签: pythonmachine-learningscikit-learnface-recognition

解决方案


看来您正在寻找估算器的.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]


推荐阅读