一次热编码后的预测

数据挖掘 数据集 回归 预言 虚拟变量
2022-03-12 03:21:28

我有一个回归模型,我想根据从最终用户那里获得的值进行预测。
在我的数据集中,我有一个分类变量,我对它进行了一次region热编码,它生成了 53 个新列(54 个区域)。
现在我的数据形状为 1000x72。然后我分成训练集和测试集,我的模型运行良好。
但我对我的模型如何预测新值感到困惑。由于我只会从最终用户那里获得一个区域值,因此我的模型将对单个值进行一次热编码,并且它将不再适合它已经训练过的形状,因为它将具有 1x18 的形状。我真的很困惑,因为我该如何以这种方式将它放入模型中......我是否只制作 53 个其他列并在每个列中放置一个虚拟 0?
抱歉,如果这是一个微不足道的问题,我对此非常陌生,任何帮助将不胜感激!

region_ohe = OneHotEncoder(categories = "auto", handle_unknown = "ignore")
X_encoded = region_ohe.fit_transform(df['region'].values.reshape(-1,1)).toarray()
2个回答

使用 sklearn 的OneHotEncoder,类别在拟合后被烘焙。您可以使用 将编码应用于新数据region_ohe.transform(x_new)(而且,正如您可能猜到的, fit_transform只需调用fitthen transform。)

假设您有一列带有数字区域:

r
1
2
3

一种热编码(又名“虚拟”或指标)给出:

r1 r2 r3
1  0  0
0  1  0
0  0  1

阅读 Pandas 的文档:https ://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.get_dummies.html

不用说,您训练的模型需要看到与您要预测的数据相同的数据结构(即变量或特征)。

如果在一个热点上进行训练,您只需将所有其他区域值设置为零,即可根据用户提供的区域输入进行预测。