1 回答

TA贡献1852条经验 获得超1个赞
正如我在评论中提到的,我认为您不一定要对该列进行加权。您想要(我认为)是类别为数字的一种方式。这可以通过 one-hot 编码在 sci-kit learn 中完成。在 Pandas 中,这是通过 pd.get_dummies() 完成的。
我会告诉你这是如何工作的:
df = pd.DataFrame({'nums' : [1, 4, 6, 7],
'colors': ['red', 'blue', 'green', 'yellow']})
df
Out[21]:
nums colors
1 red
4 blue
6 green
7 yellow
pd.get_dummies(df)
Out[22]:
nums colors_blue colors_green colors_red colors_yellow
1 0 0 1 0
4 1 0 0 0
6 0 1 0 0
7 0 0 0 1
现在,对于“颜色”中的每个类别,我们都有一个带有二进制指示符的新列。然而,这里的信息太多了。当您处理预测/回归时,您必须担心多重共线性,这是由预测变量集中的冗余信息引起的。
在这种情况下,如果所有其他指标都为 0,我们可以推断出一种颜色是蓝色。换句话说,我们不需要 colors_blue 列来表示蓝色,我们可以从其他列中包含的信息中推断出它。
由于这些原因,您可能希望添加参数drop_first=True,如下所示。
pd.get_dummies(df, drop_first=True)
Out[23]:
nums colors_green colors_red colors_yellow
1 0 1 0
4 0 0 0
6 1 0 0
7 0 0 1
在不知道您的具体用例的情况下,我无法告诉您使用哪个。但是,我认为在大多数情况下,您可能确实想删除分类列之一
添加回答
举报