sklearn中StandardScaler.fit() 、StandardScaler.transform() 、StandardScaler.fit_transform()的用法

假设存在一组数据x=[x1,x2…xn],则均值、方差、标准差,以及矩阵的标准化计算公式如下:
均值: x ˉ = 1 n ∑ i = 1 n x i \bar{x}=\frac{1}{n} \sum_{i=1}^{n} x_{i} xˉ=n1i=1nxi

方差: σ 2 = 1 n ∑ i = 1 n ( x i − x ˉ ) 2 \sigma^{2}=\frac{1}{n} \sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)^{2} σ2=n1i=1n(xixˉ)2

标准差: σ = 1 n ∑ i = 1 n ( x i − x ˉ ) 2 \sigma=\sqrt{\frac{1}{n} \sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)^{2}} σ=n1i=1n(xixˉ)2

矩阵标准化: x i = x − x ˉ σ x_{i}=\frac{x-\bar{x}}{\sigma} xi=σxxˉ

那么sklearn中StandardScaler.fit() 、StandardScaler.transform() 、StandardScaler.fit_transform()分别有什么用呢?

代码:

from sklearn.preprocessing import StandardScaler
# StandardScaler.fit()   计算矩阵每一列平均值和方差
# StandardScaler.transform()   根据均值和方差,将矩阵转标准化
# StandardScaler.fit_transform()  求均值和方差并标准化矩阵

scaler = StandardScaler()

data = [[1,2],[5,4]]
data1 = [1,2],[3,4]
data2 =[[2,4],[3,1]]
print('原始数据data:\n',data)

num1 = scaler.fit(data) #计算出矩阵每一列的均值和方差
num2 = scaler.fit_transform(data) #根据上一步的均值和方差,将矩阵转标准化
num3 = scaler.transform(data1) #注意这里是直接将矩阵data1标准化,而标准化又要用到均值和方差,所以这里用的均值和方差是data的均值和方差
num4 =scaler.transform(data2) #data2和data1一样,都是用的data的均值和方差

print('data的均值:\n',num1.mean_)  #打印出矩阵每一列的均值
print('data的方差\n',num1.var_)    #打印出矩阵每一列的方差
print('data标准化后的数据:\n',num2)
print('data1标准化后的数据:\n',num3)
print('data2标准化后的数据:\n',num4)

运行结果如下:

原始数据data:
 [[1, 2], [5, 4]]
data的均值:
 [3. 3.]
data的方差
 [4. 1.]
data标准化后的数据:
 [[-1. -1.]
 [ 1.  1.]]
data1标准化后的数据:
 [[-1. -1.]
 [ 0.  1.]]
data2标准化后的数据:
 [[-0.5  1. ]
 [ 0.  -2. ]]

进程已结束,退出代码为 0

你可能感兴趣的:(机器学习,python)