使用 SciKit Learn 进行机器学习的置信度分数?

Confidence score for machine learning with 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)

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

分类方法是一种强制选择,因此传入的每张面孔都必须被归类为已知面孔之一,即使它不是很接近。

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

您似乎在寻找 scikit-learn 估算器的 .predict_proba() 方法。它 returns 可能结果的概率而不是单一预测。

您所指的示例使用的是 SVC。这个函数有点特别,因为它指出:

The model need to have probability information computed at training time: fit with attribute probability set to True.

因此,如果您使用与示例中相同的模型,请将其实例化为:

SVC(kernel='rbf', class_weight='balanced', probability=True)

并使用 .predict_proba() 而不是 .predict():

y_pred = clf.predict_proba(X_test_pca)

这个 returns 形状数组 (n_samples, n_classes),即每个 class 的概率每个样品。例如,可以通过调用 y_pred[k] 来访问 class k 的概率。