菜菜的机器学习sklearn实战-----sklearn中数据预处理和特征工程

菜菜的机器学习sklearn实战-----sklearn中数据预处理和特征工程

概述

数据预处理与特征工程

数据不给力,再高级的算法都没有用

数据挖掘的五大流程:
1.获取数据

2.数据预处理
数据预处理是从数据中检测,纠正或者删除损坏,不准确或者不适用于模型的记录和过程

可能面对的问题有:
数据类型不同,比如有的是文字,有的是数字,有的含时间序列,有的连续有的是离散的,数据质量不行,有噪声,有异常,有缺失,数据出错,量纲不一,有重复等

数据预处理的目的:
让数据适应模型,匹配模型的需求

3.特征工程
特征工程是将原始数据转换为更代表预测模型的潜在问题的特征的过程 ,可以通过挑选最相关的特征,提取特征以及创造特征来实现。

其中创造特征又经常以降维算法的方式实现

可能面对的问题有:
特征之间的相关性,特征与标签无关,特征太多或太少,或者干脆就无法表现出应有的数据现象或无法展示数据的真实面貌

特征工程的目的:
1)降低计算成本

2)提升模型上限

4.建模,测试模型并预测出结果

5.上线,验证模型效果

sklearn中的数据预处理和特征工程

在这里插入图片描述
在这里插入图片描述
模块preprocessing:几乎包含了数据预处理的所有内容

模块impute:用来填补缺失值专用

模块feature_selection:包含特征选择的各种方法和实践

模块decomposition:包含降维算法

数据预处理 preprocessing&Impute

数据无量钢化

定义:将不同规格的数据转换到同一规格,或者不同分布的数据转换到某个特定的分布的需求,此需求就是无量纲化

线性的无量纲包括中心化(Zero-centered或者Mean-subtraction)处理和放缩处理(Scale)。

中心化的本质是让所有记录的减去一个固定值,即让数据样本数据平移到某个位置。

缩放的本质是通过除以一个固定值,将数据固定在某个范围中,取对数也算是一种缩放处理。

preprocessing.MinMaxScaler

当数据(X)按照最小值中心化后,再按极差(最大值-最小值)缩放,数据移动了最小值个单位,并且会被收敛到[0,1]之间,不是正则化,真正的正则化是regularization,不是数据预处理的一种手段的一种手段。归一化之后的数据服从正态分布,公式如下:
在这里插入图片描述
在sklearn当中,我们使用preprocessing.MinMaxScaler来实现这个功能。MinMaxScaler有一个重要参数,feature_range,控制我们希望把数据压缩到的范围,默认是[0,1]。

实现归一化

from sklearn.preprocessing import MinMaxScaler
data = [[-1,2],[-0.5,6],[0,10],[1,18]]

#不太熟悉numpy的小伙伴,能够判断data的结构?
#如果换成表什么样子?
import pandas as pd
pd.DataFrame(data)

#实现归一化
scaler = MinMaxScaler()#实例化
scaler = scaler.fit(data)#fit 在这里本质是生成min(x)和max(x)
result = scaler.transform(data)#通过接口导出结果
result

#训练和导出结果一步达到
result_ = scaler.fit_transform(data)
result_

#将归一化后的结果逆转
scaler.inverse_transform(result)
data = [[-1,2],[-0.5,6],[0,10],[1,18]]
scaler = MinMaxScaler(feature_range=[5,10])#依然实例化
result = scaler.fit_transform(data)#fit_transform一步导出结果
result

BONUS:使用numpy来实现归一化

import numpy as np
X = np.array([[-1,2],[-0.5,6],[0,10],[1,18]])

#归一化
#axis = 0 求每一行的最大/最小
X_nor = (X-X.min(axis=0))/(X.max(axis=0) - X.min(axis=0))
X_nor

#逆转归一化
X_returnd = X_nor * (X.max(axis=0) - X.min(axis=0))+X.min(axis=0)
X_returnd
preprocessing.StanderdScaler

当数据按均值中心化后,再按照标准差缩放,数据就会服从均值为0,方差为1的正态分布,而这个过程就是数据标准化(Standardization,又称Z-score normalization)
在这里插入图片描述

from sklearn.preprocessing import StandardScaler
data = [[-1,2],[-0.5,6],[0,10]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值