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

taor4pac  于 2023-08-01  发布在  其他
关注(0)|答案(1)|浏览(81)

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

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时,我可以看到它们的大小不同。
我尝试创建一个机器学习模型,训练和测试数据是分开的

2ledvvac

2ledvvac1#

如果不了解更多底层数据,很难确定。但这可能是由于您在进行测试/训练拆分之后进行编码。

尝试对整个群体进行一次热编码,然后将其分为训练集和测试集。

一个热编码为给定列中的每个唯一值创建一个列。因此,在您的测试和训练集中的任何给定列中,可能存在不同数量的唯一值,导致编码后的列数不同。

相关问题