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
  • 18
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值