python中LabelEncoder和OneHotEncoder处理数据

在处理数据时,一些变量的值是非数值型的,如中文或者英文等,在python中,很多时候,上述的数据类型是不能带入模型的,这就需要我们进行处理。

常见的处理方式有两种:

  • Onehot Encoding:即sklearn.preprocessing中的OneHotEncoder。简单来说OneHotEncoder用于将表示分类的数据扩维:
  • LabelEncoder:即sklearn.preprocessing中的LabelEncoder。简单来说 LabelEncoder 是对不连续的数字或者文本进行编号

OneHotEncoder:

from sklearn.preprocessing import OneHotEncoder

ohe = OneHotEncoder()

ohe.fit([[1],[2],[3],[4]])

ohe.transform([2],[3],[1],[4]).toarray()

输出:[ [0,1,0,0] , [0,0,1,0] , [1,0,0,0] ,[0,0,0,1] ]

LabelEncoder:

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()

le.fit([1,5,67,100])

le.transform([1,1,100,67,5])

输出: array([0,0,3,2,1])

解析:

  • 先构造encoderle = LabelEncoder(),通过fit函数传入需要编码的数据,在内部生成对应的key-value
  • 然后encoder 用于需要转化的数据,用transform函数

或者直接用fit_transform():

# Create some toy data in a Pandas dataframe
fruit_data = pd.DataFrame({
    'fruit':  ['apple','orange','pear','orange'],
    'color':  ['red','orange','green','green'],
    'weight': [5,6,3,4]
})

Output:

  color   fruit   weight
0   red     apple   5
1   orange  orange  6
2   green   pear    3
3   green   orange  4

经过LabelEncoder转码:

MultiColumnLabelEncoder(columns = ['fruit','color']).fit_transform(fruit_data)

Output:

    color   fruit   weight
0   2       0       5
1   1       1       6
2   0       2       3
3   0       1       4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值