作为没有任何预处理的交叉验证的示例,我可以这样做:
tuned_params = [{"penalty" : ["l2", "l1"]}]
from sklearn.linear_model import SGDClassifier
SGD = SGDClassifier()
from sklearn.grid_search import GridSearchCV
clf = GridSearchCV(myClassifier, params, verbose=5)
clf.fit(x_train, y_train)
我想使用类似的方法预处理我的数据
from sklearn import preprocessing
x_scaled = preprocessing.scale(x_train)
但在设置交叉验证之前这样做并不是一个好主意,因为这样训练集和测试集将一起标准化。如何设置交叉验证以在每次运行时分别预处理相应的训练和测试集?
根据文档,如果您雇用Pipeline
,这可以为您完成。来自docs http://scikit-learn.org/stable/modules/cross_validation.html,就在第 3.1.1.1 节之上,强调我的:
正如根据训练中保留的数据测试预测器很重要一样,预处理(例如标准化、特征选择等)和类似的数据转换同样应该从训练集中学习并应用于保留的数据以进行预测[...] Pipeline 使得编写估计器变得更容易,在交叉验证下提供这种行为[.]
有关可用管道的更多相关信息here http://scikit-learn.org/stable/modules/pipeline.html#combining-estimators.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)