sklearn中的数据预处理和特征工程----【2】代码及参数解释【学习笔记】

  • 编码与哑变量

    将文字型数据转换为数值型。

LabelEncoder(标签专用,把分类转换成数值分类)
from sklearn.preprocessing import LabelEncoder
# 找出数据中的一列特征
y = data.iloc[:, -1]
# 使用LabelEncoder
le = LabelEncoder()  # 初始化
le = le.fit(y)  
label = le.transform(y)
######################### 一步到位
le.fit_transform(y)
#########################
# 覆盖
data.iloc[:, -1] = label
# 查看类别多少
le.classes_
######################################## 真正的一步到达位
data.iloc[: -1] = LabelEncoder().fit_transform(data.iloc[:, -1]) 
OrdinalEncoder(特征专用,将分类特征转换为分类数值)
from sklearn.preprocessing import OrdinalEncoder
# 同上面一样的步骤
data_ = data.copy()  # 先复制出来不要破坏原数据集
# 使用OrdinalEncoder
Ord = OrdinalEncoder()
Ord = Ord.fit(data_)
Ord = Ord.transform(data_)
# 一步到位
data_ = OrdinalEncoder().fit_transform(data_)
# 查看目录(展示从第一列开始的特征类别和数据类型)
OrdinalEncoder().fit(data_).categories_
OneHotEncoder(独热编码创建哑变量)
from sklearn.preprocessing import OneHotEncoder
x = data.iloc[:, 1:-1]
# 使用 OneHotEncoder
enc = OneHotEncoder(categories='auto').fit(x)  # 让它自己看有多少特征属性
result = enc.transform(x).toarray()
# 可以还原
olddata = enc.inverse_transform(result)
pd.DataFrame(olddata)
# 跨行合并,左右表连接,axis=0 就是上下合并
newdata = pd.concat([data, pd.DataFrame(result)], axis=1)
# 删除原来的列
newdata.drop(["name1", "name2"], axis=1, inplace=True)
# 换columns
newdata.columns = ["columns1"...]

在这里插入图片描述

  • 处理连续型特征:二值化与分段

    Binarizer

    将数据二值化(将特征值设置为0或1),用于处理连续型变量。大于阈值的值映射为1,而小于或等于阈值的值映射为0。默认阈值为0时,特征中所有的正值都映射到1。

# 年龄二值化
from sklearn.preprocessing import Binarizer  
# 不能用一维数组,特征专用
x = data.iloc[:, 0].values.reshape(-1, 1)
transformer = Binarizer(threshold=阈值).fit_transform(x)  # 一步到位
# 替换
data.iloc[:, 0] = transformer
KBinsDiscretizer

​ 将连续性变量划分为分类变量的类,能够将连续型变量排序后按顺序分箱后编码。
​ 三个参数。

在这里插入图片描述

from sklearn.preprocessing import KBinsDiscretizer

# 实例化
est = KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='uniform')
est.fit_transform(x)
# 查看箱(onehot的话没有办法使用)降维函数
set(trans.fit_transform(num.reshape(-1, 1)).ravel())  # 利用set去重
# onehot 使用:箱变成了哑编码
est = KBinsDiscretizer(n_bins=3, encode='onehot', strategy='uniform') #查看转换后分的箱:变成了哑变量
est.fit_transform(X).toarray()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JamePrin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值