我正在使用scikit learn创建一个决策树模型,我需要使用StandardScaler()
分割数据BEFORE.然而,我还想使用cross_val_score()
方法.
我首先使用make_column_transformer()
中的OneHotEncoding()
对我的一些分类数据进行编码,如下所示:
transformer = sklearn.compose.make_column_transformer(
(sklearn.preprocessing.OneHotEncoder(handle_unknown='ignore'), ['SoilDrainage', 'Geology', 'LU2016']),
remainder='passthrough')
然后实例化我的模型和定标器类:
model = sklearn.tree.DecisionTreeClassifier()
scalar = sklearn.preprocessing.StandardScaler()
我将它们添加到我的管道中:
pipe = sklearn.pipeline.make_pipeline(transformer, scalar, model)
最后,我将管道输入到cross_val_score()
:
sklearn.model_selection.cross_val_score(pipe, X, y, cv=5, scoring='accuracy').mean()
当我这样做时,我没有得到任何错误,但因为分割是在cross_val_score()
方法内完成的,我不确定如何验证在分割数据之前或之后是否应用了定标器.