我的测试和训练数据具有相同的列数,但 OneHotEncoder 创建不同大小的矩阵

问题描述 投票:0回答:0

我正在尝试创建一个具有单独的训练和测试数据集的模型。它们具有相同数量的列。当我尝试对分类特征进行编码时,OneHotEncoder 创建的矩阵具有不同的大小,因此我无法预测我的测试数据,因为特征数量不同。

两个数据框具有相同的列数

one_hot= OneHotEncoder()
transformer= ColumnTransformer([("one_hot",one_hot,categorical_features)],
                              remainder="passthrough")

train_transformed_X = transformer.fit_transform(pd.DataFrame(bigdata_zeros,columns=categorical_features))
train_transformed_X_test=transformer.fit_transform(pd.DataFrame(bigdata_test_zeros,columns=categorical_features))

然后我构建我的模型

model = RandomForestRegressor()
model.fit(train_transformed_X,y_train)

然后我想看看测试数据的预测

model.predict(train_transformed_X_test)

但我收到以下错误

ValueError: X has 256 features, but RandomForestRegressor is expecting 268 features as input.

当我检查 train_transformed_X 和 train_transformed_X_test 时,我可以看到它们的大小不同。

我尝试创建一个分离训练数据和测试数据的机器学习模型

pandas machine-learning scikit-learn data-science random-forest
© www.soinside.com 2019 - 2024. All rights reserved.