Scikit learn 以与训练RF模型所用编码数据相同的格式编码新数据

Scikit learn 以与训练RF模型所用编码数据相同的格式编码新数据,scikit-learn,one-hot-encoding,Scikit Learn,One Hot Encoding,我有一个包含数字和分类数据的数据集。我用一个热编码分别对列进行了缩放和编码。我用这些数据训练了一个随机森林模型。在使用测试数据获得良好结果后,我决定使用该模型使用新数据预测结果。问题是我不知道如何有效地将分类数据转换为培训和测试数据上使用的相同编码。我使用了相同的编码器,但是我没有使用9列的and数组,而是一个新数据点只得到3列 我已经尝试使用相同的编码器,但我没有得到相同的列数 categorical_columns=['Product1','Segment1','Yes',['Product

我有一个包含数字和分类数据的数据集。我用一个热编码分别对列进行了缩放和编码。我用这些数据训练了一个随机森林模型。在使用测试数据获得良好结果后,我决定使用该模型使用新数据预测结果。问题是我不知道如何有效地将分类数据转换为培训和测试数据上使用的相同编码。我使用了相同的编码器,但是我没有使用9列的and数组,而是一个新数据点只得到3列

我已经尝试使用相同的编码器,但我没有得到相同的列数

categorical_columns=['Product1','Segment1','Yes',['Product1','Segment1','No'],
['Product3'、'Segment2'、'No']、['Product2'、'Segment1'、'Yes'],
['Product5'、'Segment2'、'No']、['Product4'、'Segment1'、'No'],
['Product4'、'Segment1'、'Yes']、['Product1'、'Segment2'、'Yes']
df=pd.DataFrame(分类列,列=[‘产品类型’、‘段’、‘特殊功能’])
从sklearn.preprocessing导入OneHotEncoder
编码器=OneHotEncoder(categories=“auto”,handle\u unknown=“ignore”,sparse=False)
ohe=编码器。拟合_变换(df)
新的分类数据=np.array([['Product3','Segment1','Yes']]
ohe_new=编码器.fit_变换(新分类数据)
我期望得到一个像:[[0,0,1,0,0,1,0,0,0]这样的数组,我得到一个像这样的数组
[[1,1,1]]

你就快到了。只需将最后一行交换到:

ohe_new = encoder.transform(new_categorical_data)  # not fit_transform

否则,
encoder
会忘记之前在第一次
fit\u变换中看到的内容

您就快到了。只需将最后一行交换到:

ohe_new = encoder.transform(new_categorical_data)  # not fit_transform
否则,
encoder
会忘记之前在第一次
fit\u变换中看到的内容