sklearn进行对数据标准化、归一化以及将数据还原的方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sklearn进行对数据标准化、归一化以及将数据还原的方法相关的知识,希望对你有一定的参考价值。
参考技术A 归一化其实就是标准化的一种方式,只不过归一化是将数据映射到了[0,1]这个区间中。
标准化则是将数据按照比例缩放,使之放到一个特定区间中。标准化后的数据的均值=0,标准差=1,因而标准化的数据可正可负。
原理:
即先求出全部数据的均值和方差,再进行计算。
最后的结果均值为0,方差是1,从公式就可以看出。
但是当原始数据并不符合高斯分布的话,标准化后的数据效果并不好。
通过生成随机点可以对比出标准化前后的数据分布形状并没有发生变化,只是尺度上缩小了
sklearn.preprocess.StandardScaler的使用:
先是创建对象,然后调用fit_transform()方法,需要传入一个如下格式的参数作为训练集。
通过invers_tainsform()方法就可以得到原来的数据。
打印结果如下:
可以看到生成的数据的标准差是1,均值接近0。
原理:
从上式可以看出归一化的结果跟数据的最大值最小值有关。
使用时类似上面的标准化
结果:
上面的标准化和归一化都有一个缺点就是每当来一个新的数据的时候就要重新计算所有的点。
因而当数据是动态的时候可以使用下面的几种计算方法:
1、arctan反正切函数标准化:
2、ln函数标准化:
sklearn 笔记:数据归一化(StandardScaler)
1 StandardScaler原理
去均值和方差归一化。且是针对每一个特征维度来做的,而不是针对样本。
,其中μ为所有样本数据的均值,σ为所有样本数据的标准差。
2 用sklearn 实现数据归一化
from sklearn.preprocessing import StandardScaler # 标准化工具
import numpy as np
x_np = np.array([[100, -1., 2.],
[2., 0., 0.],
[-1,-2,1]])
scaler = StandardScaler()
x_train = scaler.fit_transform(x_np)
print(x_train)
'''
[[ 1.4137317 0. 1.22474487]
[-0.67489704 1.22474487 -1.22474487]
[-0.73883466 -1.22474487 0. ]]
'''
3 fit_transform 和transform的区别
- fit_transform是fit和transform的组合。相当于先fit,再tranform(先拟合数据,再标准化)
- fit(x,y)传两个参数的是有监督学习的算法,fit(x)传一个参数的是无监督学习的算法(比如降维、特征提取、标准化)
- fit和transform没有任何关系,之所以出来这么个函数名,仅仅是为了写代码方便,所以会发现transform()和fit_transform()的运行结果是一样的。
- 运行结果一模一样不代表这两个函数可以互相替换,绝对不可以!transform函数是一定可以替换为fit_transform函数的,fit_transform函数不能替换为transform函数!
以上是关于sklearn进行对数据标准化、归一化以及将数据还原的方法的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 sklearn 对具有多个特征的时间序列数据进行归一化?