Python 显示未正确分类的实例

Python 显示未正确分类的实例,python,scikit-learn,Python,Scikit Learn,我正在使用Scikit学习构建SVM分类器。。。当运行分类器时。。我想通过检查错误分类的实例并试图找出错误分类背后的原因来提高分类器的准确性。。。 那么,有没有办法显示分类错误的实例呢 是否有方法显示分类错误的实例 是的,你需要在这里和那里做一些索引。下面是一个示例,但技术细节取决于分类器的输入和输出 简单的情况是,输出为单个值,因此可以轻松比较实例是否正确分类。例如,让我们收集一些数据并训练一个二进制分类器: >>> from sklearn import cross_val

我正在使用Scikit学习构建SVM分类器。。。当运行分类器时。。我想通过检查错误分类的实例并试图找出错误分类背后的原因来提高分类器的准确性。。。 那么,有没有办法显示分类错误的实例呢

是否有方法显示分类错误的实例

是的,你需要在这里和那里做一些索引。下面是一个示例,但技术细节取决于分类器的输入和输出

简单的情况是,输出为单个值,因此可以轻松比较实例是否正确分类。例如,让我们收集一些数据并训练一个二进制分类器:

>>> from sklearn import cross_validation, datasets, svm
>>> X, y = datasets.make_classification()
>>> X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y)
>>> clf = svm.LinearSVC().fit(X_train, y_train)
>>> y_pred = clf.predict(X_test)
您可以直接比较
y_test
y_pred
,因为输出是单个值。如果您正在培训一个多类模型,那么您将无法进行简单的比较,而是应该逐类进行比较

>>> misclassified_samples = X_test[y_test != y_pred]
如果需要,也可以将布尔掩码转换为索引

>>> import numpy as np
>>> np.flatnonzero(y_test != y_pred)
array([ 0, 20, 22])

我假设你使用线性支持向量机。如果不是,则是非常类似的程序

from sklearn.svm import LinearSVC
X_train=your_train_data
y_train=your_train_lables
X_test=your_test_data #should be around 30% of you your data
y_test=your_test_labels
svm = LinearSVC()
svm.fit(X_train, y_train)
for item, label in zip(X_test, y_test):
    result = svm.predict([item])
    if result != label:
        print "predicted label %s, but true label is %s" % (result, label)

这将打印分类器对测试数据所做的每一个错误。

在文本分析中,由于文本通常会转换为向量,因此查找错误分类实例的过程要复杂一些。