gpt4 book ai didi

python - 指定 Pandas get_dummies 的可能值列表

转载 作者:太空狗 更新时间:2023-10-29 20:27:33 25 4
gpt4 key购买 nike

假设我有一个如下所示的 Pandas DataFrame,并且我正在对 categorical_1 进行编码以在 scikit-learn 中进行训练:

data = {'numeric_1':[12.1, 3.2, 5.5, 6.8, 9.9], 
'categorical_1':['A', 'B', 'C', 'B', 'B']}
frame = pd.DataFrame(data)
dummy_values = pd.get_dummies(data['categorical_1'])

“categorical_1”的值是 A、B 或 C,所以我最终在 dummy_values 中有 3 列。但是,categorical_1 实际上可以采用值 A、B、C、D 或 E,因此没有代表值 D 或 E 的列。

在 R 中,我会在分解该列时指定级别 - 是否有相应的方法来使用 Pandas 执行此操作,或者我是否需要手动处理?

在我看来,有必要考虑测试数据,该列的值在训练集中使用的值之外,但作为机器学习的新手,也许这不是必需的,所以我愿意接受不同的方法来解决这个问题。

最佳答案

首先,如果您希望 pandas 获取更多值,只需将它们添加到发送到 get_dummies 方法的列表中即可

data = {'numeric_1':[12.1, 3.2, 5.5, 6.8, 9.9], 
'categorical_1':['A', 'B', 'C', 'B', 'B']}
frame = pd.DataFrame(data)
dummy_values = pd.get_dummies(data['categorical_1'] + ['D','E'])

在 python 中,+ 对列表的作用是 concatenate 操作,所以

['A','B','C','B','B'] + ['D','E']

结果

['A', 'B', 'C', 'B', 'B', 'D', 'E']

In my mind this is necessary to account for test data with a value for that column outside of the values used in the training set, but being a novice in machine learning, perhaps that is not necessary so I'm open to a different way to approach this.

从机器学习的角度来看,这是相当多余的。此列是分类列,因此值“D”对模型来说完全没有任何意义,之前从未见过它。如果您正在对一元特征进行编码(在看到您为每个值创建列后我假设),只需用

表示这些“D”、“E”值就足够了
A   B   C
0 0 0

(我假设您用 0 1 0 表示“B”值,用 0 0 1 等表示“C”)

因为如果训练集中没有这样的值,在测试期间 - 没有模型会区分给值“D”或“大象”

采取这种行动的唯一原因是假设,将来您希望添加具有“D”值的数据,并且根本不想修改代码,那么现在这样做是合理的,即使它可能会使训练更复杂一些(因为你添加了一个维度,就目前而言 - 完全没有知识),但这似乎是一个小问题。

如果您不打算以一元格式对其进行编码,而是想将这些值用作一个特征,仅使用分类值,那么您根本不需要创建这些“虚拟对象”,而是使用模型它可以使用这样的值,例如朴素贝叶斯,它可以简单地用“拉普拉斯平滑”进行训练,以便能够解决不存在的值。

关于python - 指定 Pandas get_dummies 的可能值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18280652/

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