我已经搜索了两天,似乎我无法掌握解决方案。对于机器学习回归模型,我需要对某些列进行热编码。训练数据和模型拟合正在我的本地 PC 上进行。在此之后,模型将被上传到服务器进行预测。
问题是新数据不是初始编码的一部分,因此我需要以与在我的 PC 上学习数据相同的方式对其进行热编码。我发现我可以保存编码器(sklearn.preprocessing -> OneHotEncoder)。但我无法将数据转换为正确的格式。
为了在这里更容易理解,我刚刚创建了一个带有一些非常简单的虚拟数据的笔记本。
# Import pandas library
import pandas as pd
# initialize list of lists
data = [['tom', 10], ['nick', 15], ['juli', 14]]
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['Name', 'Age'])
# print dataframe.
df
输出:
姓名年龄
汤姆 10
尼克 15
七月十四
# hot encoding
hot_Name = pd.get_dummies(df.Name)
X = pd.concat((df[['Age']], hot_Name), axis=1)
X
输出:
年龄 朱莉 尼克 汤姆
10 0 0 1
15 0 1 0
14 1 0 0
# outside data
# initialize list of lists
data_new = [['michael', 20], ['juli', 45]]
# Create the pandas DataFrame
df_new = pd.DataFrame(data_new, columns = ['Name', 'Age'])
# print dataframe.
df_new
输出:
姓名年龄
迈克尔 20
七月 45
是否可以像“data”一样对“data_new”进行编码并保存编码器以供以后用于实时传入数据?
在 df_new 的模型中使用的预期热编码:
年龄 朱莉 尼克 汤姆
20 0 0 0
45 1 0 0