sklearn中score为啥使用测试数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sklearn中score为啥使用测试数据相关的知识,希望对你有一定的参考价值。
你的是不是想问,类似lr.score(x_test,y_test)为啥里面是测试数据,而不是预测数据,如果是这个意思的话,是这个原因,lr是已经建立的模型,我们需要用测试数据检验这个模型好不好。 参考技术A 般建立完模型要预测模型坏试验靠性(排除测试偶性)要进行测试验证要用交叉验证sklearnsklearn.cross_validation.cross_val_score函数已经做
直接调用
论做归做类都用函数
具体用:
from sklearn.cross_validation import cross_val_score
metric = cross_val_score(clf,X,y,cv=5,scoring=‘ ‘).mean()
clf类器
其scoring:
[‘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_val_score() 标准化数据
【中文标题】如何使用 sklearn cross_val_score() 标准化数据【英文标题】:How to standardize data with sklearn's cross_val_score() 【发布时间】:2017-11-10 19:19:23 【问题描述】:假设我想使用 LinearSVC 对数据集执行 k-fold-cross-validation。我将如何对数据进行标准化?
我读过的最佳实践是在训练数据上构建标准化模型,然后将此模型应用于测试数据。
当使用一个简单的 train_test_split() 时,这很容易,因为我们可以这样做:
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y)
clf = svm.LinearSVC()
scalar = StandardScaler()
X_train = scalar.fit_transform(X_train)
X_test = scalar.transform(X_test)
clf.fit(X_train, y_train)
predicted = clf.predict(X_test)
在进行 k-fold-cross-validation 时如何标准化数据?问题来自这样一个事实,即每个数据点都将用于训练/测试,因此您无法在 cross_val_score() 之前标准化所有内容。对于每个交叉验证,您不需要不同的标准化吗?
文档没有提到函数内部发生的标准化。我是索尔吗?
编辑:这篇文章非常有帮助:Python - What is exactly sklearn.pipeline.Pipeline?
【问题讨论】:
【参考方案1】:您可以使用Pipeline 组合这两个进程,然后将其发送到 cross_val_score()。
当在管道上调用fit()
时,它将一个接一个地拟合所有变换并变换数据,然后使用最终估计器拟合变换后的数据。在predict()
期间(仅当管道中的最后一个对象是估计器时可用,否则transform()
)它将对数据应用转换,并使用最终估计器进行预测。
像这样:
scalar = StandardScaler()
clf = svm.LinearSVC()
pipeline = Pipeline([('transformer', scalar), ('estimator', clf)])
cv = KFold(n_splits=4)
scores = cross_val_score(pipeline, X, y, cv = cv)
查看各种管道示例以更好地理解它:
http://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html#examples-using-sklearn-pipeline-pipeline如有任何疑问,请随时询问。
【讨论】:
以上是关于sklearn中score为啥使用测试数据的主要内容,如果未能解决你的问题,请参考以下文章
为啥 sklearn 的训练/测试拆分加上 PCA 会使我的标签不正确?
为啥 xgboost.cv 和 sklearn.cross_val_score 给出不同的结果?
将二维数组传递给 sklearn.metrics.recall_score 时,为啥会出现 ValueError?