【发布时间】:2021-08-27 19:18:24
【问题描述】:
我有分类值和非分类值的数据集。 我将 OneHotEncoder 应用于分类值,将 StandardScaler 应用于连续值。
transformerVectoriser = ColumnTransformer(transformers=[('Vector Cat', OneHotEncoder(handle_unknown = "ignore"), ['A', 'B', 'C']),
('StandardScaler', StandardScaler(), ['D', 'E'])],
remainder='passthrough') # Default is to drop untransformed columns
现在我想对我的模型进行交叉验证,但问题是,我应该转换我的特征吗?我该怎么做?
我的意思是,我需要转换我的数据,因为这是处理分类值的唯一方法。
我知道我应该fit_transform 我的训练数据和只有transform 我的测试数据,但是我如何在交叉验证中管理它?
现在,我这样做了:
features = transformerVectoriser.fit_transform(features)
clf = RandomForestClassifier()
cv_score = cross_val_score(clf, features, results, cv=5)
print(cv_score)
但我认为这是不正确的,因为fit_transform 将应用于测试折叠和训练折叠,它应该在训练集中应用fit_transform,在测试集中应用transform。
我应该只拟合数据,还是只转换数据,还是第三种?
【问题讨论】:
标签: python machine-learning scikit-learn cross-validation