- 在大多数机器学习算法中都是只能处理数值型数据,不能处理文字,尤其是sklearn的实现。
- 很多标签和特征在数据收集后不是以数字呈现的,付费方式可能包含[“支付宝”,“数字人民币”,“微信”]。
- 所有大多数情况下我们必须把数据编码
情况1:
对标签
from sklearn.preprocessing import LabelEncoder
y=data.iloc[:,-1]
le = LabelEncoder()
le = le.fit(y)#导入数据
label = le.transform(y) #transform接口调用结果
le.classes_#属性.classes_查看标签中究竟有多少类别
label #查看获取的结果label
#le.fit_transform(y) #也可以直接fit_transform一步到位
#le.inverse_transform(label) #使用inverse_transform可以逆转
得到一串array([0,2,2,2,0,1,…])
data.iloc[:,-1]=label
data.head()
覆写最后一列
#也可以一步到位
from sklearn.preprocessing import LabelEncoder
data.iloc[:,-1] = LabelEncoder().fit_transform(data.iloc[:,-1])
情况2:
对特征
from sklearn.preprocessing import OrdinalEncoder
#接口categories_对应LabelEncoder的接口classes_,一模一样的功能
data_ = data.copy()
data_.head()
OrdinalEncoder().fit(data.iloc[:,1:-1]).categories_
#取每一行,从第2个列开始只不取最后一列。
#categories_ like classes_
data_.iloc[:,1:-1] = OrdinalEncoder().fit_transform(data_.iloc[:,1:-1])
data_.head()