这看起来像是一个小问题。但是,我无法预测模型的结果。我的问题是这样的:
我有一个形状为1000 x 19(目标特征除外)的数据集,但是经过一轮热编码后,它变成了1000 x 141。 由于我是根据形状为1000 x 141的数据训练模型的,因此我需要(至少)形状为1 x 141的数据进行预测。 我也知道在python中,我可以使用进行未来的预测
model.predict(data)
但是,由于我是通过形状为1 x 19的Web门户从最终用户那里获取数据的,所以现在我很困惑该如何进一步根据用户数据进行预测。
如何将形状为1 x 19的数据转换为1 x 141,因为我必须相对于训练/测试数据保持相同的顺序,这意味着列的顺序应该没有差异? 在这方面的任何帮助将不胜感激。
答案 0 :(得分:2)
我假设要创建一个单一的热编码,您正在使用sklearn onehotencoder。如果使用它,则该问题应该很容易解决。由于您正在训练数据上安装一个热编码器
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(categories = "auto", handle_unknown = "ignore")
X_train_encoded = encoder.fit_transform(X_train)
因此,现在在上面的代码中,您的编码器已安装在您的训练数据上,因此当您获得测试数据时,可以使用此已安装的编码器将其转换为相同的编码数据。
test_data = encoder.transform(test_data)
现在,您的测试数据也将具有1x141形状。您可以使用
检查形状(pd.DataFrame(test_data.toarray())).shape