use*_*_az 9 python machine-learning svm svc scikit-learn
我使用了以下一组代码:我需要检查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))
Run Code Online (Sandbox Code Playgroud)
OUTPUT
nice day in nyc => Class 1
the capital of great britain is london => Class 2
i like london better than new york => Class 3
Run Code Online (Sandbox Code Playgroud)
我想检查一下Training和Test Dataset之间的准确性.分数功能对我不起作用,它显示一个错误,指出多标签值不能被接受
>>> classifier.score(X_train, X_test)
Run Code Online (Sandbox Code Playgroud)
NotImplementedError:多标记分类器不支持分数
请帮助我获得培训和测试数据的准确性结果,并为我们的分类案例选择算法.
may*_*wsw 11
如果您想获得测试集的准确度分数,则需要创建一个可以调用的答案密钥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)
Run Code Online (Sandbox Code Playgroud)
此外,除了准确性之外,sklearn还有其他几个指标.在这里查看:sklearn.metrics