数据预处理
一、数据挖掘的5大流程
- 获取数据
- 数据预处理:让数据适应模型,匹配模型的需求
- 数据类型不同:有的是文字,有的是数字,有的连续,有的离散,有的含时间序列
- 有缺失值,有异常
- 量纲不一,差距太大
- 数据量太大或者太小,呈现偏态
- 特征工程:可以降低计算成本,提升模型上限
- 特征太多或太少
- 特征和标签无关
- 特征之间有相关性
- 建模:测试模型并预测出结果
- 上线,验证模型效果
二、sklearn中的数据预处理和特征工程
- 模块preprocessing:几乎包含数据预处理的所有内容
- 模块Impute:填补缺失值专用
- 模块feature_selection:包含特征选择的各种方法的实践
- 模块decomposition:包含降维算法
三、数据预处理
3.1数据无量纲化
在平时处理特征的时候,有的特征与特征之间的量纲差距太大,从而会影响后面模型的结果,导致特征的重要性不准,差距比较大,为了解决这种状况,我们需要对特征全部进行无量纲化,即将不同规格的数据转换到同一规格,将不同分布的数据转换到某个特定分布的需求。
3.1.1 preprocessing.MinMaxScaler(数据归一化)
当数据(x)按照最小值中心化后,再按极差(最大值 - 最小值)缩放,数据移动了最小值个单位,并且会 被收敛到[0,1]之间,而这个过程,就叫做数据归一化(Normalization,又称Min-Max Scaling),公式:
x ∗ = x − m i n ( x ) m a x ( x ) − m i n ( x ) x^{*} = \frac{x - min(x)}{max(x) - min(x)} x∗=max(x)−min(x)x−min(x)
from sklearn.preprocessing import MinMaxScaler
import pandas as pd
pd.DataFrame([[-1, 2], [-0.5, 6], [0, 10], [1, 18]]) #实现归一化
scaler = MinMaxScaler() #实例化
scaler = scaler.fit(data) #fit,在这里本质是生成min(x)和max(x)
result = scaler.transform(data) #通过接口导出结果
result_ = scaler.fit_transform(data) #训练和导出结果一步达成
scaler.inverse_transform(result) #将归一化后的结果逆转