机器学习笔记-数据预处理-数据编码

数据预处理-特征数据编码

特征数据一般分为数值特征和对象特征,对于对象特征我们一般采用数据编码的方式转换为可进行处理的数值

1.LabelEncoder(进行数据自编码)

对分类型特征值进行编码,即对不连续的数值或文本进行编码
对于数字映射的编码方式,存在一个编码映射表:比如{‘A’: 1, ‘B’: 2, ‘C’: 3}
那么上述的特征可以通过数字编码映射为[1, 2, 1]

from sklearn.preprocessing import LabelEncoder
label_encode = LabelEncoder()
data_train['grade'] = label_encode.fit_transform(data_train['grade'])#fit_transform(y):相当于先进行fit再进行transform,即把y塞到字典中去以后再进行transform得到索引值。
data_train['grade']

2.map(进行字典的数字编码映射)

使用map进行直接的数字编码映射

for data in [data_train, data_test_a]:
    data['grade'] = data['grade'].map({'A':1,'B':2,'C':3,'D':4,'E':5,'F':6,'G':7})
data_train['grade']

3.OnehotEncoder(进行one-hot编码)

编码后各分量之间距离平衡,编码格式为二进制代码,相互之间的欧式距离相等,有利于消除由于编码带来的性能偏差,设置三个特征:西瓜的敲声=[沉闷,浑浊];西瓜的色泽=[乌黑,青绿,浅白,深绿];西瓜的纹理=[清晰,模糊,稍糊]

[沉闷,青绿,模糊]
[浑浊,深绿,清晰]
[浑浊,浅白,稍糊]
[沉闷,乌黑,模糊]可映射为a矩阵

from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder()
a=  [[0,1,2],
     [1,3,0],
     [1,2,2],
     [0,0,1]]
enc.fit(a)
data = enc.transform([[1,2,1]]).toarray() #a = [浑浊,浅白,模糊]
print(data)

对敲声的两个选项进行编码为 10和01
对色泽的四个选项进行编码为 0001,0010,0100,1000
对纹理的三个选项进行编码为 001,010,100
运行结果显示为

# 类型数在2之上,又不是高维稀疏的,且纯分类特征
for data in [data_train, data_test_a]:
    data = pd.get_dummies(data, columns=['subGrade', 'homeOwnership', 'verificationStatus', 'purpose', 'regionCode'], drop_first=True)#进行独热编码
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值