我正在尝试创建一个模型,其中训练和测试数据集是分开的。它们具有相同数量的列。当我尝试对分类特征进行编码时,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时,我可以看到它们的大小不同。
我尝试创建一个机器学习模型,训练和测试数据是分开的
1条答案
按热度按时间2ledvvac1#
如果不了解更多底层数据,很难确定。但这可能是由于您在进行测试/训练拆分之后进行编码。
尝试对整个群体进行一次热编码,然后将其分为训练集和测试集。
一个热编码为给定列中的每个唯一值创建一个列。因此,在您的测试和训练集中的任何给定列中,可能存在不同数量的唯一值,导致编码后的列数不同。