在使用StandardScaler的时候需要先新建一个它的对象
from sklearn.preprocessing import StandardScaler
stdScaler=StandardScaler()
fit_transform是对数据做归一化,归一化后的数据的每1列的均值为0,方差与每一列的数据个数相同.例如下面这样的一个数据
[[1,2,0],
[-1,-2,4]]
对它进行fit_transform操作后会得到
[[ 1. 1. -1.]
[-1. -1. 1.]]
这个时候StandardScaler就会记录对数据做归一化的时候使用的规则。
比如说对于第1列就是不做任何操作
对第2列数据除以2
对第3列数据先除以2再减1
后面再调用transform函数的时候就是直接使用fit_transform的时候记录下来的归一化规则,例如对下面这样的一组数据调用transform
[[1,1,1],
[1,1,1]]
它会直接把上面的统计结果直接使用在这组数据上,
调用stdScaler.transform()后得到
[[1,0.5,-0.5],
[1,0.5,-0.5]]
以下是完整的示例代码
from sklearn.preprocessing import StandardScaler
import numpy
mainMat=numpy.array([[1,2,0],[-1,-2,4]])
#测试矩阵
testMat=mainMat*0+2
#输出测试矩阵
print(testMat)
#新建一个用于标准化的对象
stdScaler=StandardScaler()
#对矩阵做fit标准化
matFit=stdScaler.fit_transform(mainMat)
#计算标准化结果的平方和
sumValue=0
for row in matFit:
for num in row:
sumValue+=num*num
print(sumValue)
#输出标准化后的结果
print(matFit)
#对矩阵做直接的标准化
matTrans=stdScaler.transform(testMat)
#输出直接标准化后的结果
print(matTrans)
输出结果为
[[2 2 2]
[2 2 2]]
6.0
[[ 1. 1. -1.]
[-1. -1. 1.]]
[[2. 1. 0.]
[2. 1. 0.]]