sklearn中的数据预处理和特征工程
2020-01-13 04:01
190 查看
背景:由于特征之间的量纲不同,使得不同的指标之间没有可比性,不处于同一数量级的指标,无法进行分析。
解决方案:将所有的数据映射到同一个尺度中。
重要性:处于区间范围差异较大的特征,当采用随即梯度下降法学习时,学习速率相比同一区间更低。
适用于:通过梯度下降法求解的模型,如:线性回归,逻辑回归,SVM,神经网络等。
不适用于:树形结构
一、最值归一化 normalization
即:把所有数据映射到0-1之间
适用于:分布有明显边界的情况,如:学生分数/图像像素
缺点:受outlier影响较大,如:收入
python实现:
[code]import numpy as np x = np.random.randint(0,100,size=100) (x - np.min(x)) / (np.max(x) - np.min(x)) X = np.random.randint(0,100,(50,2)) X = np.array(X, dtype=float) # X[:,0]第一列,第一个特征 X[:,0] = (X[:,0] - np.min(X[:,0])) / (np.max(X[:,0]) - np.min(X[:,0])) X[:,1] = (X[:,1] - np.min(X[:,1])) / (np.max(X[:,1]) - np.min(X[:,1])) # n个特征时 for i in range(0,n): X[:,i] = (X[:,i]-np.min(X[:,i])) / (np.max(X[:,i] - np.min(X[:,i])))
二、均值方差归一化 standardization
即:把所有数据归一到均值为0方差为1的分布中
适用于:分布无明显边界,有可能存在极端数据值 (除分数/像素等之外,基本都考虑有均值方差归一化)
python实现:
[code]X2 = np.array(np.random.randint(0,100,(50,2)),dtype=float) for i in range(0,2): X2[:,i]=(X2[:,i]-np.mean(X2[:,i])) / np.std(X2[:,i])
三、在sklearn中专门的用来数据归一化的方法:StandardScaler
[code]from sklearn.preprocessing import StandardScaler standardScaler = StandardScaler() standardScaler.fit(X_train) standardScaler.mean_ standardScaler.scale_ X_train_standard = standardScaler.transform(X_train) X_test_standard = standardScaler.transform(X_test)
注:测试数据集的均值和方差,依然使用训练集的
参考:https://www.cnblogs.com/juanjiang/p/10948849.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 平均数编码:针对高基数定性特征(类别特征)的数据预处理/特征工程
- sklearn -特征工程-预处理
- 平均数编码:针对高基数定性特征(类别特征)的数据预处理/特征工程
- 数据挖掘sklearn中的的特征工程处理
- 机器学习02-使用python中的sklearn库进行数据的预处理(数据的特征工程)
- NLP的特征工程及数据预处理的分类
- 从sklearn.preprocessing, sklearn.feature_selection学习特征工程之预处理
- 数据预处理 | 机器学习之特征工程
- sklearn-数据预处理-特征变换
- 用sklearn.preprocessing做数据预处理(六)——非线性特征
- 【机器学习 第三周】简单的数据预处理和特征工程
- 使用sklearn进行数据预处理 特征选择
- 特征工程与数据预处理
- sklearn中的数据预处理——标准化\最小-最大规范化\特征标签二值化\异常值\标签编码等
- 机器学习里数据预处理及特征工程总结
- 数据预处理、特征工程和特征学习
- Python机器学习笔记 使用sklearn做特征工程和数据挖掘
- 数据预处理 特征工程 之库sklearn-pandas
- 2.2w字长文详解推荐系统之数据与特征工程,码起来慢慢看
- 特征工程sklearn基础实践、特征工程数据可视化