首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >扩展数组(sklearn) - python

扩展数组(sklearn) - python
EN

Stack Overflow用户
提问于 2018-07-21 03:15:42
回答 1查看 117关注 0票数 1

在过去的几个小时里,我一直在努力解决这个问题,但我遇到了太多的问题。我想使用sklearn中的MinMaxScaler。

公式是这样的

代码语言:javascript
复制
Xnorm = X-Xmin / Xmax-Xmin

我想将该公式应用于一些数组位置,但我在弄清楚如何也应用一个逆公式时遇到了麻烦,例如

代码语言:javascript
复制
Xnorm = Xmax-X / Xmax-Xmin

我的尝试:我想对数组中的第一个和第三个值进行标准化,而对于数组中的第二个值,我想从上面的公式中得到反向标准化

代码语言:javascript
复制
X = np.array([[-0.23685953,  0.04296864,  0.94160742],  
              [-0.23685953,  1.05043547,  0.67673782],
              [0.12831355,  0.16017461,  0.27031023]])


from sklearn import preprocessing
minmax_scale = preprocessing.MinMaxScaler().fit(X)
X_std = minmax_scale.transform(X.iloc[:,np.r_[1,3])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-21 04:27:29

使用公式计算特定列的Xnorm的任务:-

Xnorm = Xmax-X / Xmax-Xmin

如果您将该特定列中的值的符号反转,然后在该列中应用基本标准化,则可以解决此问题。

证明

如果某列的最大值为A,最小值为B,则将所有值乘以-1后,新的最小元素的绝对值将变为|A|

(因此分子将计算为{ -1*X - -1*A } == {A-X}),

分母的相对差异将保持不变。

在你的测试用例上实现逻辑:

代码语言:javascript
复制
import numpy as np
X = np.array([[-0.23685953,  0.04296864,  0.94160742],  
              [-0.23685953,  1.05043547,  0.67673782],
              [0.12831355,  0.16017461,  0.27031023]])


from sklearn import preprocessing
X[:, 1] =  -1*X[:, 1]
minmax_scale = preprocessing.MinMaxScaler().fit(X)
X_std = minmax_scale.transform(X)

在打印X_std时,我们得到:-

代码语言:javascript
复制
array([[0.        , 1.        , 1.        ],
       [0.        , 0.        , 0.60543616],
       [1.        , 0.8836627 , 0.        ]])

这表明列2的值是所需的值,即使用所提出的反向标准化公式计算的值。

希望这能有所帮助。

不断询问,不断成长:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51449039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档