sklearn chapter3 x1

数据预处理以及特征工程

使用的库
from sklearn.preprocessing import LabelEncoder,OrdinalEncoder,OneHotEncoder,Binarizer
from sklearn.impute import SimpleImputer
from sklearn.feature_selection import VarianceThreshold
from sklearn.model_selection import cross_val_score
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2,f_classif,mutual_info_classif,SelectFromModel,RFE

数据无量纲化
数据归一化 (中心化、缩放)
sklearn.preprocessing import MinMaxScaler
计算公式

z = (x- min(x))/(max(x)-min(x))

a = MinMaxScaler() + b = fit_transform() 完成归一化

a.inverse_transform(b) 可以逆转

标准化 (from sklearn.preprocessing import StandardScaler)
按均值中心化(类似正态分布中心线为0),按标准差进行缩放(正态分布 压缩到1)

X* = (x-μ)/σ

参数
feature_range ---- 控制压缩范围 默认[0,1]

属性和接口示例

Scaler = StandardScaler()
Scaler.fit(data)
Scaler.mean_ 查看均值的属性 fit后使用 不能使用fit_transform
Scaler.var_ 查看方差 fit后使用 不能使用fit_transform

MaxAbsScaler
只进行缩放不中心化
不会破坏数据集的稀疏性

其他数据处理方式
在这里插入图片描述

加粗样式-----------------------------------------------------------------------------------------------------

缺失值处理

常用库
from sklearn.impute import SimpleImputer

SimpleImputer参数

missing_values
确定缺失值的数值或者字符 如默认值为np.nan

startegy
填补缺失值的策略 默认为均值

‘mean’ ‘median’ ‘most_frequent’ 众数
‘constant’ 配合fill_calue参数一起使用 表示固定数值填补缺失值 fill_value = 固定的数值

copy
布尔值参数
默认为True 会创建特征矩阵的副本 不会修改原特征矩阵

处理分类特征 编码与哑变量

常用库
from sklearn.preprocessing import LabelEncoder,OrdinalEncoder,OneHotEncoder,Binarizer

LabelEncoder
将分类字符串类型数据转换成分类数值型数据

具体操作
#实例化
le = LabelEncoder()
#输入数据拟合
le = le.fit(y)
le.classes_ 返回类别数据
#输出数据
res = le.transoform(y)
#逆转
data = le.inverse_transform(res)

简洁写法
data.iloc[:,-1] = LabelEncoder().fit_transform(data.iloc[:,-1])

特征专用————不能使用一维数据 需要转换成高维 .reshape(-1,1)
OrdinalEncoder
特征专用 能将分类特种转换成分类数值

具体操作
#实例化
le =OrdinalEncoder()
#输入数据拟合
le = le.fit(y)
le.categories_ 返回类别数据
#输出数据
res = le.transoform(y)
#逆转
data = le.inverse_transform(res)

简洁写法
data.iloc[:,-1] = OrdinalEncoder().fit_transform(data.iloc[:,-1])

OneHotEncoder——独热编码 创建哑变量

具体操作
o_hot = OneHotEncoer(categories = ‘auto’).fit(X)
重要属性
o_hot.categories_
res = o_hot.transform(X).toarray() #转换成数组类型
#获取具体列名
res.get_feature_names() #会返回x0类1 x0类2 x1类1 x2类2 类似列名

数据类型以及常用的统计量总结

在这里插入图片描述

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

设置阈值 将数据分为大于阈值以及小于阈值的两部分

二值化

from sklearn.preprocessing import Binarizer

具体操作

#类为特征专用,所以不能使用一维数组
X = data_2.iloc[:,0].values.reshape(-1,1)

transformer =Binarizer(threshold=30).fit_transform(X)

将连续性遍历划分为分类变量

能将连续型遍历排序后按顺序分箱后编码


preprocessing.KBinsDiscretizer

重要参数

n_bins
每个特征中的分箱个数 默认为5

encode
编码方式 默认onehot

‘onehot’ 做哑变量

“ordinal” 类似于OrdinalEncoder

strategy
定义箱宽的方式 默认quantile
‘uniform’ 表示等宽分箱 每个特征中的每个箱的最大值差值
(特征.max() - 特征.min())/n_bins 每个箱范围一致

‘quantile’ 等位分箱 即每个特征中的每个箱内的样本数量相同

‘kmeans’ 聚类分享 没给昂中的值最到最近一维k均值聚类的族心的距离相同

具体操作
#实例化
est = KBinsDiscretizer(n_bins = 3,encode = ‘ordinal’,strategy=‘uniform’)
#拟合转化输出数据
res = est.fit_transform(X)
#one hot 记得toarray()

est = KBinsDiscretizer(n_bins=3,encode=‘onehot’, strategy=‘uniform’)
#查看转换后分的箱:变成了哑变量
est.fit_transform(X).toarray()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值