Python 使用scipy或sklearn缩放两个矩阵
我想缩放一个矩阵X1(按列),然后使用缩放X1时发现的平均值和标准偏差缩放另一个矩阵X2 据我所知,sklearn在缩放矩阵时不返回均值/方差。在没有我实施的情况下,是否有其他方法 例如:Python 使用scipy或sklearn缩放两个矩阵,python,numpy,scipy,scikit-learn,Python,Numpy,Scipy,Scikit Learn,我想缩放一个矩阵X1(按列),然后使用缩放X1时发现的平均值和标准偏差缩放另一个矩阵X2 据我所知,sklearn在缩放矩阵时不返回均值/方差。在没有我实施的情况下,是否有其他方法 例如: X1 X2 将X2[i][j]替换为(X2[i][j]-平均值[X1[:,i]]]/std[X1[:,i] sklearn预处理的比例函数不能使用,因为它不返回均值和方差 使用.std()和.mean()方法接受axis参数来计算行/列统计数据,其余将由boardcasting处理: In [170]: X
X1 X2 将
X2[i][j]
替换为(X2[i][j]-平均值[X1[:,i]]]/std[X1[:,i]
sklearn预处理的比例函数不能使用,因为它不返回均值和方差 使用.std()
和.mean()
方法接受axis
参数来计算行/列统计数据,其余将由boardcasting处理:
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 ]])
从scikit学习处理这一点,和角落的情况,相当好
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X1)
output = scaler.transform(X2)
如有必要,可以使用访问要素列的平均值和标准偏差
scaler.std_
scaler.mean_
您还可以使用管道中的StandardScaler作为估计器之前的预处理。您能否举例说明按列缩放矩阵的意义,以及X2的外观?缩放意味着使用该列的平均值及其标准偏差对X1的每列进行规范化问题是您必须手动处理列的所有值均为零的情况。我试图找到一个函数,它不仅在列的所有值==0时自动执行,只要该列中的值都是相同的值,方差将为0,转换将导致
+inf
。不知道在这种情况下你想怎么做。
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X1)
output = scaler.transform(X2)
scaler.std_
scaler.mean_