数据预处理模块
python中的sklearn中模块中:
模块preprocessing:几乎包含数据预处理的所有内容
模块Impute:填补缺失值专用
模块feature_selection:包含特征选择的各种方法的实践
模块decomposition:包含降维算法
下面来看一下针对具体模块在数据预处理中的使用:
数据无量纲化
场景:将不同规格的数据转换到同一个规格,将不同分布的数据转换到某个特定的分布等。
在算法中的作用:
logistic,SVM,神经网络是以梯度为核心的算法,使用无量纲化可以加快求解速度;
KNN,K-Means是以距离为核心的模型,使用无量纲化可以提升模型的精度。
(决策树是例外,它可以处理任何数据,它不需要无量纲化。)
数据无量纲化:线性,非线性
线性的包括:
中心化:减去一个固定值,实现数据平移。
缩放:除以一个固定值或者取对数,实现数据固定在某个范围。
数据归一化(Normalization,Min-Max Scaling):
x*=(x-min(x))/(max(x)-min(x))
归一化后的数据服从正态分布。
PS:数据正则化与归一化不同,正则化不是数据预处理的手段。
# 数据归一化:使用Preprocessing.MinMaxScaler来实现
# 数据归一化:使用Preprocessing.MinMaxScaler来实现
In [1]:
from sklearn.preprocessing import MinMaxScaler
In [2]:
data=[[-1,2],[-0.5,6],[0,10],[1,18]]
data=[[-1,2],[-0.5,6],[0,10],[1,18]] # 二维数组,list
In [5]:
# 在dataframe中查看data
import pandas as pd
pd.DataFrame(data)
Out[5]:
0 1
0 -1.0 2
1 -0.5 6
2 0.0 10
3 1.0 18
In [6]:
# 归一化:
# 三个步骤:实例化,fit,transform
scaler=MinMaxScaler()
scaler=scaler.fit(data)
result=scaler.transform(data) #通过接口导出结果
In [7]:
result
# 会看到归一化后的数据竟然是一样的,避免了之前量纲存在对数据造成的干扰
Out[7]:
array([[0. , 0. ],
[0.25, 0.25],
[0.5 , 0.5 ],