独热编码的应用实例

独热编码处理

from sklearn.preprocessing import StandardScaler ,LabelEncoder,OneHotEncoder
import pandas as pd
import numpy as np
df7 = pd.DataFrame({'一':['first','seconde','third'],'二':list('abc'),
                '三':[9,8,7]})

在这里插入图片描述

OneHotEncoder

只要传给OneHotEncoder 就会进行处理,自动认为是分类变量

one = OneHotEncoder(sparse=False)
inter = one.fit_transform(df7)

pd.DataFrame(inter)

在这里插入图片描述

只对需要的列进行处理

如果只使用LabelEncoder进行处理

from sklearn.preprocessing import StandardScaler ,LabelEncoder,OneHotEncoder
import pandas as pd
import numpy as np
df7 = pd.DataFrame({'一':['first','seconde','third'],'二':list('abc'),
                '三':[9,8,7]})

z_var_dict={}
for var in df7.dtypes[df7.dtypes == 'object'].index:   
    num = LabelEncoder()
    df7[var] = num.fit_transform(df7[var].astype('str'))
    dict0={}
    for label in num.classes_:
        dict0[label]=num.transform([label])[0]
    z_var_dict[var]=dict0

在这里插入图片描述

Labelencoder 与 OneHotEndoer 一起使用

from sklearn.preprocessing import StandardScaler ,LabelEncoder,OneHotEncoder
import pandas as pd
import numpy as np
df7 = pd.DataFrame({'一':['first','seconde','third'],'二':list('abc'),
                '三':[9,8,7]})

new_dfs = []
z_var_dict={}
for col in df7.dtypes[df7.dtypes == 'object'].index:
    num = LabelEncoder()
    enc = OneHotEncoder()
    cat_col = df7.pop(col)  # 把属于种类的series pop出来
    col_name = cat_col.name  # 小DataFrame的basename,后面命名用到
    # labelencoder和onehotencoder进行fit   
    cat_col = num.fit_transform(cat_col.astype('str'))
    new_val = enc.fit_transform(cat_col.reshape(-1, 1)).toarray()
    # 保存一个小DataFrame,append到外面列表里
    n_df = pd.DataFrame(new_val, columns=[col_name + '_' + str(x) for x in num.classes_])
    new_dfs.append(n_df)
    
    # 以下是onehot码对应字典,不用可注释掉。
    dict2 = {}
    for i in num.classes_:
        dict2[i] = enc.transform(num.transform([i]).reshape(-1, 1)).toarray()
    z_var_dict[col]=dict2
    
new_dfs.append(df7)
df8 = pd.concat(new_dfs, axis=1)
print(z_var_dict)

在这里插入图片描述

利用pandas 的get_dummies 进行处理


from sklearn.preprocessing import StandardScaler ,LabelEncoder,OneHotEncoder
import pandas as pd
import numpy as np
df7 = pd.DataFrame({'一':['first','seconde','third'],'二':list('abc'),
                '三':[9,8,7]})

#dummies = pd.get_dummies(df7.c,prefix = 'a')


for var in df7.dtypes[df7.dtypes == 'object'].index:
    for_dummy = df7.pop(var)
    df7 = pd.concat([df7, pd.get_dummies(for_dummy, prefix=var)], axis=1)

在这里插入图片描述

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值