Pandas - 字符串值编码

问题描述 投票:-1回答:1

任何人都可以建议什么是编码字符串功能的最佳方法,其中我有> 500个独特的功能。这属于分类数据吗?我需要基本上使用具有大量独特功能的字符串功能来规范化数据,并且相邻功能是共同实现的。 (例如,col1和col2对于分类问题中的一个类具有特定组合。类似地,col3和col4对于每个类也具有一些固定模式)在为ML算法做好准备之前,如何在此场景中编码我的数据?

python pandas
1个回答
0
投票

有几种方法可以对分类特征进行编码。最好的方法实际上取决于您的数据集以及您将要使用的ML算法,因此您可以尝试不同的编码方案并选择具有最佳结果的方案。

我使用了具有数百个独特值(例如产品品牌)的分类功能,并使用基于树的算法,并且标签编码器与算法配合良好。

例如,您可以使用scikit-learn label encoder

>>> le = preprocessing.LabelEncoder()
>>> le.fit(["paris", "paris", "tokyo", "amsterdam"])
LabelEncoder()
>>> list(le.classes_)
['amsterdam', 'paris', 'tokyo']
>>> le.transform(["tokyo", "tokyo", "paris"]) 
array([2, 2, 1]...)
>>> list(le.inverse_transform([2, 2, 1]))
['tokyo', 'tokyo', 'paris']

您也可以在pandas中执行此操作,例如,如果您有一个包含要编码的字符串类别的列,则可以尝试:

df["categorical_feature"] = df["categorical_feature"].astype('category')
df["categorical_feature_enc"] = df["categorical_feature"].cat.codes

您可以尝试的另一个有用的编码是单热编码。但是,由于您有许多要编码的类别,这会导致每个分类要素(n =类别数)向数据集添加n列。查看pandas get_dummies查看示例。

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