Python :如何在多标签类的 SVM 文本分类器算法中找到准确性结果



我使用了以下代码集:我需要检查X_train的准确性和X_test

以下代码在多标签类的分类问题中对我有用

import numpy as np
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.svm import LinearSVC
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.multiclass import OneVsRestClassifier
X_train = np.array(["new york is a hell of a town",
                    "new york was originally dutch",
                    "the big apple is great",
                    "new york is also called the big apple",
                    "nyc is nice",
                    "people abbreviate new york city as nyc",
                    "the capital of great britain is london",
                    "london is in the uk",
                    "london is in england",
                    "london is in great britain",
                    "it rains a lot in london",
                    "london hosts the british museum",
                    "new york is great and so is london",
                    "i like london better than new york"])
y_train = [[0],[0],[0],[0]
            ,[0],[0],[1],[1]
            ,[1],[1],[1],[1]
            ,[2],[2]]
X_test = np.array(['nice day in nyc',
                   'the capital of great britain is london',
                   'i like london better than new york',
                   ])   
target_names = ['Class 1', 'Class 2','Class 3']
classifier = Pipeline([
    ('vectorizer', CountVectorizer(min_df=1,max_df=2)),
    ('tfidf', TfidfTransformer()),
    ('clf', OneVsRestClassifier(LinearSVC()))])
classifier.fit(X_train, y_train)
predicted = classifier.predict(X_test)
for item, labels in zip(X_test, predicted):
    print '%s => %s' % (item, ', '.join(target_names[x] for x in labels))

输出

nice day in nyc => Class 1
the capital of great britain is london => Class 2
i like london better than new york => Class 3

我想检查训练数据集和测试数据集之间的准确性。评分函数对我不起作用,它显示一个错误,指出无法接受多标签值

>>> classifier.score(X_train, X_test)

未实现错误:多标签分类器不支持分数

请帮助我获得训练和测试数据的准确性结果,并为我们的分类案例选择一种算法。

如果要获得测试集的准确性分数,则需要创建一个答案键,可以将其称为 y_test 。除非您知道正确答案,否则您无法知道您的预测是否正确。

一旦你有了答案键,你就可以得到准确性。您想要的方法sklearn.metrics.accuracy_score。

我在下面写出来了:

from sklearn.metrics import accuracy_score
# ... everything else the same ...
# create an answer key
# I hope this is correct!
y_test = [[1], [2], [3]]
# same as yours...
classifier.fit(X_train, y_train)
predicted = classifier.predict(X_test)
# get the accuracy
print accuracy_score(y_test, predicted)

此外,除了准确性之外,sklearn还有其他几个指标。在这里看到它们: sklearn.metrics