我有一个关于数千个城市的学校数据的数据框。学校是行标识符,城市编码如下:
school city category capacity
1 azez6576sebd 45 23
2 dsqozbc765aj 12 236
3 sqdqsd12887s 8 63
4 azez6576sebd 7 234
...
知道我有几千个城市,如何将城市变量转换为数字?我猜单行编码不合适,因为我的列太多了。将具有数千个级别的分类变量转换为数字的一般方法是什么?
谢谢。
您可以在sklearn中使用category dtype,它应该为labelencoder
labelencoder
在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
[在生产ML系统和Kaggle竞赛中使用的最佳方式是使用嵌入,例如其目标统计信息。因此,对于二进制目标变量,您可以为每个不同的分类值计算以下内容。