0

我的数据集中有一个特征State,所以在拆分后我将编码应用于这样的训练集

ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(drop='first', handle_unknown='ignore'), ['State'])], remainder='passthrough')
encoded_X_train = ct.fit_transform(X_train)

像这样训练模型

regressor = LinearRegression()
regressor.fit(encoded_X_train, y_train)

然后像这样编码和预测

encoded_X_test = ct.fit_transform(X_test)
y_pred = regressor.predict(encoded_X_test)

这是这样做的正确过程,还是我做错了什么?

4

1 回答 1

1

不可以。您应该只使用训练数据来训练编码模型。
fit_transform正在根据与数据拟合的模型转换数据。

因此,您应该改用以下代码。

ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(drop='first', handle_unknown='ignore'), ['State'])], remainder='passthrough')
encoded_X_train = ct.fit_transform(X_train)
encoded_X_test = ct.transform(X_test)
于 2021-11-11T06:50:10.467 回答