在机器学习中,大多数场景都只能处理数值型数据,但在现实场景中,很多特征和标签在采集完毕后,都不是以数字呈现的,比如说学历可能是 ['小学', '初中', '高中', '大学'],付费方式可能包含 ['支付宝', '微信', '现金'],这种情况下为了让数据适应算法和库,我们必须对数据进行编码,即文字型数据转化为数值型。
标签编码
preprocessing.LabelEncoder:标签专用,能够将分类转化为分类数值。sklearn数据集中,label都已经被处理过了,所以本例中以 Embarked 为例。
import pandas as pd from sklearn.preprocessing import LabelEncoder data = pd.read_csv('./datas/titanic.csv') data.dropna(subset=['Embarked'], inplace=True) le = LabelEncoder() le.fit(data['Embarked']) # 生成classes_ res = le.transform(['S', 'Q', 'C']) # 编码 print(res) print(le.classes_) # 查看编码list # 逆转 res = le.inverse_transform([0, 1, 2]) print(res) # 不需要展示中间过程时简写 from sklearn.preprocessing import LabelEncoder data['Embarked'] = LabelEncoder().fit_transform(data['Embarked'])
特征编码
preprocessing.OrdinalEncoder:特征专用,能够将分类特征转为为分类数值。本例中以 Embarked 和 Sex 两个特征为例。
from sklearn.preprocessing import OrdinalEncoder data = pd.read_csv('./datas/titanic.csv') data.dropna(subset=['Embarked'], inplace=True) # 注意:本方法只接受二维特征 cates = OrdinalEncoder().fit(data[['Sex', 'Embarked']]).categories_ print(cates) data[['Sex', 'Embarked']] = OrdinalEncoder().fit_transform(data[['Sex', 'Embarked']]) print(data['Sex'].unique())
本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/264
- 上一篇:
- Sklearn缺失值处理-填充和删除
- 下一篇:
- 归并排序算法