Python 使用cross_validation.cross_val_score和metrics.precision_recall_fscore_支持
我是scikits新手,我想使用Python 使用cross_validation.cross_val_score和metrics.precision_recall_fscore_支持,python,scikit-learn,cross-validation,Python,Scikit Learn,Cross Validation,我是scikits新手,我想使用交叉验证。交叉验证分数和指标。精确性-召回率-核心支持,这样我就可以获得所有相关的交叉验证指标,而无需运行一次交叉验证以确保准确性、一次精确性、一次召回率和一次f1。但当我尝试此操作时,我得到一个值错误: from sklearn.datasets import fetch_20newsgroups from sklearn.svm import LinearSVC from sklearn.feature_extraction.text import Tfid
交叉验证。交叉验证分数
和指标。精确性-召回率-核心支持
,这样我就可以获得所有相关的交叉验证指标,而无需运行一次交叉验证以确保准确性、一次精确性、一次召回率和一次f1。但当我尝试此操作时,我得到一个值错误:
from sklearn.datasets import fetch_20newsgroups
from sklearn.svm import LinearSVC
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn import metrics
from sklearn import cross_validation
import numpy as np
data_train = fetch_20newsgroups(subset='train', #categories=categories,
shuffle=True, random_state=42)
clf = LinearSVC(loss='l1', penalty='l2')
vectorizer = TfidfVectorizer(
sublinear_tf=False,
max_df=0.5,
min_df=2,
ngram_range = (1,1),
use_idf=False,
stop_words='english')
X_train = vectorizer.fit_transform(data_train.data)
# Cross-validate:
scores = cross_validation.cross_val_score(
clf, X_train, data_train.target, cv=5,
scoring=metrics.precision_recall_fscore_support)
以下是错误:
File "<stdin>", line 3, in <module>
File "sklearn/cross_validation.py", line 1148, in cross_val_score
for train, test in cv)
File "sklearn/externals/joblib/parallel.py", line 514, in __call__
self.dispatch(function, args, kwargs)
File "sklearn/externals/joblib/parallel.py", line 311, in dispatch
job = ImmediateApply(func, args, kwargs)
File "sklearn/externals/joblib/parallel.py", line 135, in __init__
self.results = func(*args, **kwargs)
File "sklearn/cross_validation.py", line 1075, in _cross_val_score
score = scorer(estimator, X_test, y_test)
File "sklearn/metrics/metrics.py", line 1261, in precision_recall_fscore_support
print beta
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
应将sci工具包学习更新至最新版本0.16 并非所有sklearn.metrics都有效,而且名称也不同。接受以下参数:
ValueError: 'wrong_choice' is not a valid scoring value. Valid options are
['accuracy', 'adjusted_rand_score', 'average_precision', 'f1', 'f1_macro',
'f1_micro', 'f1_samples', 'f1_weighted', 'log_loss', 'mean_absolute_error',
'mean_squared_error', 'median_absolute_error', 'precision',
'precision_macro', 'precision_micro', 'precision_samples',
'precision_weighted', 'r2', 'recall', 'recall_macro', 'recall_micro',
'recall_samples', 'recall_weighted', 'roc_auc']
查看,在
sklearn.cross\u validation
ATM中有很多内容。@larsmans我没有看到它被列出来,所以将它作为一个新问题发布。谢谢正如我指出的,有一个小错误。您需要使用“AsScorer”创建一个scorer对象,以使用任何函数作为“scoring”的参数。但是,由于precision_recall_fscore_支持返回多个值,因此您需要稍微修改一下才能使其正常工作。请尝试使用具有评分选项的cross_validate(),而不是cross_validate。。
ValueError: 'wrong_choice' is not a valid scoring value. Valid options are
['accuracy', 'adjusted_rand_score', 'average_precision', 'f1', 'f1_macro',
'f1_micro', 'f1_samples', 'f1_weighted', 'log_loss', 'mean_absolute_error',
'mean_squared_error', 'median_absolute_error', 'precision',
'precision_macro', 'precision_micro', 'precision_samples',
'precision_weighted', 'r2', 'recall', 'recall_macro', 'recall_micro',
'recall_samples', 'recall_weighted', 'roc_auc']