简述为什么数据要进行标准化和scale函数的应用

先自定义实现一下Scale Scale其本质上是一个线性的变化

from sklearn import preprocessing
import numpy as np
x=np.array([[10,112,2],[10,0,0],[0,30,-1]])
#求均值
X_mean=x.mean(axis=0)
X_std=x.std(axis=0)
print("这里自定义实现缩放",(x-X_mean)/X_std)
#求方差
#将每一个列都比昂其标准化的正态分布
x_scale=preprocessing.scale(x)
print(x_scale)
#结果为
这里自定义实现缩放 [[ 0.70710678  1.36606169  1.33630621]
 [ 0.70710678 -0.99990083 -0.26726124]
 [-1.41421356 -0.36616087 -1.06904497]]
[[ 0.70710678  1.36606169  1.33630621]
 [ 0.70710678 -0.99990083 -0.26726124]
 [-1.41421356 -0.36616087 -1.06904497]]

这里可以对比看出 其实就是将数据进行缩放 公式为 (X-Mean)/Std 中心化数据,那么到底为什么要中心化数据,首先我们了解机器学习是学习一个样本的特征那么我们先用代码来看一下缩放和位缩放的特征看变了没有

# 可视化数据展示
# 建立数据集列表
data_list = [x, x_scale]
# 创建颜色列表
color_list = ['blue', 'red']
# 创建标题样式
title_list = ['source data', 'scale']

# 设置画幅
plt.figure(figsize=(9, 6))
# 循环数据集和索引
for i, dt in enumerate(data_list):
    # 子网格
    plt.subplot(2, 3, i+1)
    # 数据画散点图
    plt.scatter(dt[:, 0], dt[:, 1], c=color_list[i])
    #???离群数据是怎么定义的
    #plt.xlim(-2,2)
    #plt.ylim(-3,3)
    # 设置标题
    plt.title(title_list[i])
# 图片储存 
#plt.savefig('xx.png')

在这里插入图片描述
从图上可以看出每一个列的特征分布一致 标准化的好处就是数据很明显更密集了这一点从对应的x轴和y轴可以很方便的看出来特别是有先距离算法 如Knn算法里标准化数据和未标准化数据的区别是非常大的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值