分类转换为分类数值
1:通过sklearn中的preprocessing模块完成
(1)观察数据
(2)标签列编码
Survived为标签列,将标签列转换为分类数值。
通过sklearn.preprocessing.LabelEnconder完成,该类专门用于处理分类标签数据转换成分类数值
from sklearn.preprocessing import LabelEncoder
y = data.iloc[:, -1] # 要输入的是标签,不是特征矩阵,所以允许一维
le = LabelEncoder() # 实例化
le = le.fit(y) # 导入数据
label = le.transform(y) # 接口调取结果
data.iloc[:, -1] = label # 让标签等于我们运行出来的结果
le.inverse_transform(label) # 逆转,把label转回y
LabelEncoder的重要属性classes_可以查看标签的所有类别
le.classes_
查看y
查看label
label
查看结果
data
实际使用过程中可以通过一行代码完成
data.iloc[:, -1] = LabelEncoder().fit_transform(data.iloc[:, -1])
(3)特征列编码
通过sklearn.preprocessing.OrdinalEnconder完成,该类专门用于处理分类特征数据转换成分类数值
把Sex和Embarked列转为分类数值,同理如上,一行代码展示
from sklearn.preprocessing import OrdinalEncoder
data.iloc[:, 1:-1] = OrdinalEncoder().fit_transform(data_.iloc[:, 1:-1])
data
OrdinalEncoder的重要属性categoris_可以查看标签的所有类别,等同于上一个的classes_
OrdinalEncoder().fit(data.iloc[:, 1:-1]).categories_
2:通过pandas完成编码
Sexclass = {'male': 0
,'female': 1}
data['Sex'] = data['Sex'].map(Sexclass)
Embarkedclass = {'S': 0
,'C': 1
,'Q': 2}
data['Embarked'] = data['Embarked'].map(Embarkedclass)
都是一样的效果,使用前可以用以下代码查看分类有多少种
data.Embarked.unique()