我可以在scikit学习中获得错误的预测列表吗?

问题描述 投票:2回答:3

我们可以使用svm.SVC.score()来评估SVM模型的准确性。如果预测错误,我想获得预测的班级和实际的班级。如何在scikit-learn中实现此目标?

python machine-learning scikit-learn svm
3个回答
11
投票

最简单的方法是遍历您的预测(和正确的分类),然后对输出执行任何所需的操作(在下面的示例中,我将其打印到stdout)。

让我们假设您的数据在输入,标签中,并且您训练有素的SVM在clf中,那么您可以这样做

predictions = clf.predict(inputs)
for input, prediction, label in zip(inputs, predictions, labels):
  if prediction != label:
    print(input, 'has been classified as ', prediction, 'and should be ', label) 

5
投票

取决于您希望不正确的预测采用哪种形式。对于大多数使用情况,混淆矩阵应足够。

混淆矩阵是实际类别与预测类别的图,因此图的对角线是所有正确的预测,而其余单元格是错误的预测。

Confusion Matrix

您可以在sklearn的Confusion Matrix example上看到一个更好的混淆矩阵示例。

如果只需要列出所有错误分类的值及其预测和实际类别的列表,则可以执行以下操作。

只需选择实际类和预测类不相等的所有数据行。

import numpy as np
import pandas as pd

X = np.array([0.1, 0.34, 0.2, 0.98])
y = np.array(["A", "B", "A", "C"])

y_pred = np.array(["A", "C", "B", "C"])

df = pd.DataFrame(X, columns=["X"])
df["actual"] = y
df["predicted"] = y_pred

incorrect = df[df["actual"] != df["predicted"]]

在这种情况下,incorrect将包含以下条目。

      X actual predicted
1  0.34      B         C
2  0.20      A         B

0
投票

您可以使用sklearn直接创建混淆矩阵。它给出(2 * 2)矩阵。

from sklearn import metrics

my_matrix = metrics.confusion_matrix(Y_test, Y_predicted)

Y_test:测试类的数组

Y_predicted:模型预测的数组

混淆矩阵的单元格将为您提供:真正值,假正值,假负值和真负值。

请查看this

© www.soinside.com 2019 - 2024. All rights reserved.