Pandas数据帧编码具有数千个唯一值的分类变量

问题描述 投票:5回答:3

我有一个关于数千个城市的学校数据的数据框。学校是行标识符,城市编码如下:

school city          category   capacity
1      azez6576sebd  45         23
2      dsqozbc765aj  12         236
3      sqdqsd12887s  8          63 
4      azez6576sebd  7          234 
...

知道我有几千个城市,如何将城市变量转换为数字?我猜单行编码不合适,因为我的列太多了。将具有数千个级别的分类变量转换为数字的一般方法是什么?

谢谢。

python pandas categorical-data
3个回答
10
投票

您可以在sklearn中使用category dtype,它应该为labelencoder

labelencoder

4
投票

在ML分类器的上下文中,仍然可以管理数千列。尽管您想当心df.city=df.city.astype('category').cat.codes df Out[385]: school city category capacity 0 1 0 45 23 1 2 1 12 236 2 3 2 8 63 3 4 0 7 234

此外,您不希望通过curse of dimensionality调用导致内存崩溃,因此可以生成get_dummies-

SparseDataFrame

您可以使用v = pd.get_dummies(df.set_index('school').city, sparse=True) v azez6576sebd dsqozbc765aj sqdqsd12887s school 1 1 0 0 2 0 1 0 3 0 0 1 4 1 0 0 type(v) pandas.core.sparse.frame.SparseDataFrame -]生成稀疏矩阵>

sdf.to_coo

0
投票

[在生产ML系统和Kaggle竞赛中使用的最佳方式是使用嵌入,例如其目标统计信息。因此,对于二进制目标变量,您可以为每个不同的分类值计算以下内容。

© www.soinside.com 2019 - 2024. All rights reserved.