Python : Multilabel 클래스의 SVM 텍스트 분류기 알고리즘에서 정확도 결과를 찾는 법


Answers

테스트 세트의 정확도 점수를 얻으려면 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

Question

다음 코드 집합을 사용했습니다 : 그리고 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

Training과 Test Dataset 사이의 정확성을 확인하고 싶습니다. 점수 기능이 작동하지 않으면 멀티 라벨 값을 수락 할 수 없다는 오류가 표시됩니다.

>>> classifier.score(X_train, X_test)

NotImplementedError : 멀티 라벨 분류 기준에 점수가 지원되지 않습니다.

교육 및 테스트 데이터의 정확도 결과를 얻고 분류 사례의 알고리즘을 선택하도록 도와주십시오.