用scipy或sklearn缩放两个矩阵

时间:2014-08-16 22:29:27

标签: python numpy scipy scikit-learn

我想缩放矩阵X1(按列),然后缩放另一个矩阵X2,其中缩放X1时找到平均值和标准偏差。

据我所知,sklearn在缩放矩阵时不返回均值/方差。没有我实施它是否有替代方法?

例如:
X1

1  2  3  4
5  6  7  8
9 10 11 12  

X2

12 13 14 15
16 17 18 19 

X2[i][j]替换为(X2[i][j] - mean[X1[:, i]]) / std[X1[:, i]]

不能使用sklearn预处理的缩放函数,因为它不返回均值和方差。

2 个答案:

答案 0 :(得分:4)

来自scikit learn的Standard Scaler可以处理这个问题,并且非常好。

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X1)
output = scaler.transform(X2)

如有必要,您可以使用

访问要素列的均值和标准差
scaler.std_
scaler.mean_

您还可以在管道中使用StandardScaler作为估算器之前的预处理。

答案 1 :(得分:0)

.std().mean()方法都接受axis参数来计算行/列统计信息,其余的将通过电路板制作来处理:

In [170]:

X1
Out[170]:
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])
In [171]:

X2
Out[171]:
array([[12, 13, 14, 15],
       [16, 17, 18, 19]])
In [172]:

(X2-X1.mean(0))/X1.std(0)
Out[172]:
array([[ 2.14330352,  2.14330352,  2.14330352,  2.14330352],
       [ 3.3680484 ,  3.3680484 ,  3.3680484 ,  3.3680484 ]])