数据预处理:分类特征转为分类数值(离散型特征)

分类转换为分类数值

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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值