使用Sklearn的MinMaxScaler做最简单的归一化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Sklearn的MinMaxScaler做最简单的归一化相关的知识,希望对你有一定的参考价值。
参考技术A 归一化是一种无量纲处理手段,使物理系统数值的绝对值变成某种相对值关系。简化计算,缩小量值的有效办法。如下图,x1的取值为0-2000,而x2的取值为1-5,假如只有这两个特征,对其进行优化时,会得到一个窄长的椭圆形,导致在梯度下降时,梯度的方向为垂直等高线的方向而走之字形路线,这样会使迭代很慢,相比之下,右图的迭代就会很快(理解:也就是步长走多走少方向总是对的,不会走偏)
归一化的另一好处是提高精度,这在涉及到一些距离计算的算法时效果显著,比如算法要计算欧氏距离,上图中x2的取值范围比较小,涉及到距离计算时其对结果的影响远比x1带来的小,所以这就会造成精度的损失。所以归一化很有必要,他可以让各个特征对结果做出的贡献相同。
在多指标评价体系中,由于各评价指标的性质不同,通常具有不同的量纲和数量级。当各指标间的水平相差很大时,如果直接用原始指标值进行分析,就会突出数值较高的指标在综合分析中的作用,相对削弱数值水平较低指标的作用。因此,为了保证结果的可靠性,需要对原始指标数据进行标准化处理。
在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。数据无量纲化处理主要解决数据的可比性。经过上述标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析。
从经验上说,归一化是让不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。
输出:
到github查看 https://github.com/horacepei/tensorflow_study
如何将 sklearn MinMaxScaler() 的值转换回实际值?
【中文标题】如何将 sklearn MinMaxScaler() 的值转换回实际值?【英文标题】:How to convert value from sklearn MinMaxScaler() back to real value? 【发布时间】:2018-04-15 16:42:10 【问题描述】:我像这样使用 sklearn MinMaxScaler()。
from sklearn.preprocessing import MinMaxScaler
sc = MinMaxScaler()
train_sc = sc.fit_transform(train)
test_sc = sc.transform(test)
它将数据更改为 0-1 范围。在我已经预测它仍然是 0-1 之后。如何转换回实际价值?
【问题讨论】:
【参考方案1】:在输出预测数据上使用inverse_transform()
。
from sklearn.preprocessing import MinMaxScaler
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
scaler = MinMaxScaler()
scaler.fit(data)
print(scaler.transform([[2, 2]]))
Out>>> [[ 1.5 0. ]]
// This is what you need
print(scaler.inverse_transform([[ 1.5 0. ]]))
Out>>> [[ 2.0 2.0]]
【讨论】:
以上是关于使用Sklearn的MinMaxScaler做最简单的归一化的主要内容,如果未能解决你的问题,请参考以下文章
如何将 sklearn MinMaxScaler() 的值转换回实际值?
[转]sklearn中MinMaxScaler/StandardScaler的区别
为啥 sklearn MinMaxScaler() 返回超出范围的值而不是错误?