gpt4 book ai didi

python - 如何处理 scikit learn 模型中基数的变化

转载 作者:行者123 更新时间:2023-11-30 08:48:06 27 4
gpt4 key购买 nike

我正在尝试在 sci-kit 学习模型中使用高基数特征(siteid),并使用 get_dummies 对该特征进行单热编码。我得到了大约 800 个新的二进制列,它们使用逻辑回归返回了不错的精度。我的问题是,当我通过模型传递一个新数据集时,我对该功能有不同的基数,例如 300 个唯一值,并且模型正确地询问,您训练我的其他 500 列在哪里?我该如何解决这个问题?

我不想每次基数发生变化时都必须训练模型,也不想在 SQL 数据加载中对这些列进行硬编码。

cat_columns = ["siteid"]

df = pd.get_dummies(df, prefix_sep="__",
columns=cat_columns)

最佳答案

我的建议是用零填充这些剩余的列。因此,如果您的新训练样本有 10 个唯一值,并且模型需要 50 个值(total_cols 的数量),则在右侧创建 40 个零列以“填写”其余的值数据:

df = pd.DataFrame({"siteid": range(10)})
cat_columns = ["siteid"]
df1 = pd.get_dummies(df, columns=cat_columns)

# df1 has shape (10, 10)

total_cols = 50 # Number of columns that model expects
zero_padding = pd.DataFrame(np.zeros((df1.shape[0], total_cols - df1.shape[1])))
df = pd.concat([df1, zero_padding], axis=1)
df.columns = ["siteid__" + str(i) for i in range(df.shape[1])]

# df now has shape (10, 50)

关于python - 如何处理 scikit learn 模型中基数的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57688843/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com