机器学习:数据特征预处理(归一化以及标准化对比)
数据特征预处理
通过特定的统计方法(数学方法)将数据转换成算法要求的数据
第一,二组数据:3个样本,四个特征。通过预处理变成其它的特征。
数值型数据:标准缩放
1.归一化
2.标准化
3.缺失值
类别型数据:one-hot编码
时间类型:时间的切分
sklearn 特征处理API:
-sklearn.preprocessing
归一化:API: sklearn.preprocessing.MinMaxScaler
特点:通过对原始数据进行变换把数据映射到(默认为【0,1】)之间
这里我简单的说明一下计算的方法:先看特征1和样本1的归一化计算的值。
特征1这一列最大值是90 最小值是30 mx是1 mi是0
x’=90-60/90-60=1 x’’=1(1-0)+0=1
所以样本1特征1的归一化数值就是1
MinMaxScaler语法:
-MinMaxScalar(feature_range=(0,1)…)
每个特征缩放到给定范围(默认[0,1])
-MinMaxScalar.fit_transform(X)
X:numpy array格式的数据[n_samples,n_features]
返回值:转换后的形状相同的array
归一化步骤:
from sklearn.preprocessing import MinMaxScaler def mm(): """归一化处理""" #mm=MinMaxScaler(feature_range=(2,3)) 可以设定归一化的范围,默认是[0,1] mm=MinMaxScaler() data=mm.fit_transform([[90,2,10,40], [60,4,15,45], [75,3,13,46]]) print(data) return None if __name__ == '__main__': mm()
归一化案例:约会对象数据
相亲约会对象数据,这个样本时男士的数据,三个特征,玩游戏所消耗时间的
百分比、每年获得的飞行常客里程数、每周消费的冰淇淋公升数。然后有一个
所属类别,被女士评价的三个类别,不喜欢didnt、魅力一般small、极具魅力large
也许也就是说飞行里程数对于结算结果或者说相亲结果影响较大,但是统计的
人觉得这三个特征同等重要。
每个样本有三个特征,一个评价。首先我们看三个特征可以去评价出一些结果:比如说一个样本的飞行里程数,可以看出这个样本可能天天坐飞机,可能很有钱,但是如果天天在飞机上可能在家的时间就会非常少。所以说不能通过一个特征去判断,所以可能其他特征也特别的重要,所有我们需要对数据进行归一化。这只是简单的理解
归一化目的:使一个特征对最终结果不会造成更大的影响
注意:如果数据中异常点比较多,意味着数据不对,这个时候我们需要通过公式去判断,如果说统计了一个数据,最大值为异常点,所以说每一列的特征和归一化计算公式中的数据全部变化了,造成了很大的影响。
归一化的缺点:对异常点的处理不好
归一化总结:
注意在特定场景下最大值最小值是变化的,另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性(产品稳定性)较差,只适合传统精确小数据场景。所以一般都不使用归一化
标准化(常用的方法):API scikit-learn.preprocessing.StandardScaler
特点:通过对原始数据进行变换把数据变换到均值为0,方差为1范围内
简单介绍一下这个算法:
还是的注意这里是每一列进行计算。
每一列的平均值mean:112.5
方差:std=(90-112.5)²+(60-112.5)²+(75-112.5)²/3
标准差:σ= √std
结合归一化来谈标准化:
异常点对平均值的影响不是很大,对于标准差产生的影响更小。
考虑极端情况下:方差为0,所以说每一个点的特征值都一样,方差越来越大数据离散得就比较开
StandardScaler语法:
StandardScaler(…)处理之后每列来说所有数据都聚集在均值0附近标准差为1
-StandardScaler.fit_transform(X,y)
X:numpy array格式的数据[n_samples,n_features]
返回值:转换后的形状相同的array
-StandardScaler.mean_
原始数据中每列特征的平均值
-StandardScaler.std_
原始数据每列特征的方差
from sklearn.preprocessing import StandardScaler def stand(): """标准化缩放""" std=StandardScaler() data=std.fit_transform([[ 1., -1., 3.], [ 2., 4., 2.], [ 4., 6., -1.]]) print(data) if __name__ == '__main__': stand()
标准化总结:在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。
create by 0125c
- 点赞
- 收藏
- 分享
- 文章举报
- 【机器学习】【数据预处理】数据的规范化,归一化,标准化,正则化
- python机器学习库sklearn——数据归一化、标准化、特征选择、逻辑回归、贝叶斯分类器、KNN模型、支持向量机、参数优化
- spark 数据预处理 特征标准化 归一化模块
- 【python数据挖掘课程】二十九.数据预处理之字符型转换数值型、标准化、归一化处理
- 【原】关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
- 使用sklearn进行数据预处理 —— 归一化/标准化/正则化
- 数据预处理 - 归一化与Z-Score标准化
- 5.sklearn之转换器(说白了就是,划分训练集和测试集、以及标准化、归一化数据)
- 特征工程(三) 数据标准化和归一化
- Python数据预处理—归一化,标准化,正则化
- 研究|数据预处理|归一化 (标准化)
- 使用sklearn进行数据预处理 —— 归一化/标准化/正则化
- 【原】关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
- 关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
- 关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
- 关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
- 关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
- 机器学习中的数据预处理中的标准化(sklearn preprocessing)
- 数据标准化 数据归一化 数据预处理 data normalization / scale
- 数据挖掘中的特征预处理以及特征选择