使用SciKit Learn进行机器学习的信心评分?

我已经按照一个使用SciKit Learn进行人脸识别的例子进行了操作。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()方法。它返回的是可能结果的概率,而不是单一的预测。

你所参考的例子使用的是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)的数组,即每个样本每个类的概率。例如,通过调用y_pred[k]可以访问类k的概率。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注