python学习——pandas使用get_dummies,对无大小区分分类字段进行one-hot热编码

参考博客:

python中get_dummies实践

pandas使用get_dummies进行one-hot编码

在数据集中,会有一些分类字段,比如衣服的大小(X,XL,M),衣服的颜色(RED,GREEN),在进行训练的时候,我们肯定要让category变为nummerical表达形式。

对于有大小区分的category,直接map就行了。如下:

df = pd.DataFrame([
            ['green', 'M', 10.1, 'class1'], 
            ['red', 'L', 13.5, 'class2'], 
            ['blue', 'XL', 15.3, 'class1']])
 
df.columns = ['color', 'size', 'prize', 'class label']
 
size_mapping = {
           'XL': 3,
           'L': 2,
           'M': 1}
df['size'] = df['size'].map(size_mapping)

对于颜色这种无法区分大小的数据,我们就使用one-hot编码,pandas自带方法帮我们完成编码。

>>> df = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],
...                    'C': [1, 2, 3]})
>>> pd.get_dummies(df, prefix=['col1', 'col2'])
   C  col1_a  col1_b  col2_a  col2_b  col2_c
0  1       1       0       0       1       0
1  2       0       1       1       0       0
2  3       1       0       0       0       1

从上面的结果可以看到,热编码是将我们一个分类字段变为多个分类字段,1代表是这个分类,0代表不是这个分类。

最后说明一下

get_dummies()不会改变原来的df,这个方法返回的是改变后的df,所以如果你想得到改变后的df,就df = pd.get_dummies()

猜你喜欢

转载自blog.csdn.net/qq_23418043/article/details/82556628