当前位置:   article > 正文

简述为什么数据要进行标准化和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]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

这里可以对比看出 其实就是将数据进行缩放 公式为 (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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/752500
推荐阅读
相关标签
  

闽ICP备14008679号