Python实现归一化算法详情


Posted in Python onMarch 18, 2022

1.前言                                 

归一化算法Normalization将数据处理成量纲一直的数据,一般限定在[0,1]、[-1,1]
一般在进行建模的时候需要进行数据归一化处理,

原因如下:

  • 降低计算难度
  • 有可能提高模型的预测精度
  • 消除量纲影响

下面介绍三种常见的标准化方法,分别是最大最小值、正态中心化、小数点定标

2.Min-Max方法

2.1 公式

Python实现归一化算法详情

2.2 算法实现逻辑

  • 1.找一组数据的最大最小值
  • 2.利用公式归一化
  • 3.输入结果(为了方便可视化展示,我们设计了代码)

2.3 代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 1.最小最大标准化
Data = np.array([[0.2,0.9,29],
                [0.9,0.1,100],
                [0.5,0.5,30]]) #最小-最大归一化算法
# 1.1数据转化
def MinMax(data):
    min = 0
    max = 1
    C = data[:,2]
    min = np.min(C)
    max = np.max(C)
    for one in data:
        one[2] = (one[2]-min) / (max-min)
    print('转化后的矩阵:\n',data)
    return data


# 1.2可视化
def ShowData(Data,ShowD1):
    length = len(Data)
    X = np.ones(Data.shape[0])
    plt.figure(1)
    plt.subplot(121)
    for i in range(length):
        plt.scatter(X*(i+1),Data[:,i])
    plt.subplot(122)
    for i in range(length):
        plt.scatter(X*(i+1),ShowD1[:,i])
    plt.show()
ShowData(Data,MinMax(Data.copy()))

转化后的矩阵:

 [[0.2        0.9        0.        ]
 [0.9        0.1        1.        ]
 [0.5        0.5        0.01408451]]

Python实现归一化算法详情

2.4局限

  • 数据规模过大不适应
  • 数据归一化后范围在[0,1],对于一些有负有正数的原始数据慎用

3 Z-score标准化

3.1 公式

Python实现归一化算法详情

3.2 算法实现逻辑

  • 输入数据
  • 求取数据的均值、方法,在利用中心化公式计算
  • 输出结果

3.3 代码

def Zscore(data):
    x_mean = np.mean(data[:2])
    length = len(data[:,2])
    vari = np.sqrt((np.sum((data[:2]-x_mean)**2))/length)
    print('方差:',vari)
    data[:,2] = (data[:,2]-x_mean)/vari
    print('Z-score标准化后的矩阵是',data)
    return data

ShowData(Data,Zscore(Data.copy()))

方差: 51.569160680908254
Z-score标准化后的矩阵是 [[0.2        0.9        0.13864876]
 [0.9        0.1        1.5154406 ]
 [0.5        0.5        0.15804019]]

Python实现归一化算法详情

3.4 局限

  • 对样本量少的数据,表现不好
  • 标准化后范围在有负有正,范围在[-1,1]

4 小数定标法

4.1 公式

Python实现归一化算法详情

4.2 算法实现逻辑

  • 输入数据
  • 绝对值化,最大值
  • 将每个数除以最大值的数量级
  • 输入数据

4.3 代码实现

# 小数定标归一化算法
def Decimals(data):
    C = np.abs(data[:,2])
    max = int(np.sort(C)[-1]) # 按从小到大排序,取最后一位,及最大值
    k = len(str(max))
    print('绝对值最大的位数:\n',k)
    data[:2] = data[:,2] /(10**k)
    print('小数点定标准化后的矩阵:\n',data)
    return data
ShowData(Data,Decimals(Data.copy()))

绝对值最大的位数:

 3

小数点定标准化后的矩阵:

 [[2.9e-02 1.0e-01 3.0e-02]
 [2.9e-02 1.0e-01 3.0e-02]
 [5.0e-01 5.0e-01 3.0e+01]]

Python实现归一化算法详情

4.4 局限

  • 受到最大值影响较大

到此这篇关于Python实现归一化算法详情的文章就介绍到这了,更多相关Python归一化算法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中的类与对象之描述符详解
Mar 27 Python
简单介绍Ruby中的CGI编程
Apr 10 Python
python与php实现分割文件代码
Mar 06 Python
Python 模拟登陆的两种实现方法
Aug 10 Python
Python_LDA实现方法详解
Oct 25 Python
Python语言进阶知识点总结
May 28 Python
对Python生成器、装饰器、递归的使用详解
Jul 19 Python
python3 写一个WAV音频文件播放器的代码
Sep 27 Python
Python:slice与indices的用法
Nov 25 Python
Python定义一个Actor任务
Jul 29 Python
PyTorch预训练Bert模型的示例
Nov 17 Python
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
Jun 03 Python
python实现会员管理系统
Mar 18 #Python
Python内置数据类型中的集合详解
Python集合set()使用的方法详解
Mar 18 #Python
基于Python实现流星雨效果的绘制
Python中with上下文管理协议的作用及用法
Mar 18 #Python
python 判断文件或文件夹是否存在
Mar 18 #Python
分享Python获取本机IP地址的几种方法
Mar 17 #Python
You might like
PHP的FTP学习(一)[转自奥索]
2006/10/09 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
php和javascript之间变量的传递实现代码
2012/12/19 PHP
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
64位windows系统下安装Memcache缓存
2015/12/06 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
PHP PDO数据库操作预处理与注意事项
2019/03/16 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
php实现映射操作实例详解
2019/10/02 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
JavaScript 嵌套函数指向this对象错误的解决方法
2010/03/15 Javascript
jQuery 自定义函数写法分享
2012/03/30 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
Javascript的闭包详解
2014/12/26 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
2019/09/05 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
python列表操作之extend和append的区别实例分析
2015/07/28 Python
Python计算时间间隔(精确到微妙)的代码实例
2019/02/26 Python
Python使用指定端口进行http请求的例子
2019/07/25 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
python tkinter基本属性详解
2019/09/16 Python
Keras使用tensorboard显示训练过程的实例
2020/02/15 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
2020/04/16 Python
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
Android笔试题总结
2014/11/29 面试题
营业经理岗位职责
2013/11/10 职场文书
2014年祖国生日寄语
2014/09/19 职场文书
周末问候语大全
2015/11/10 职场文书
mysql使用 not int 子查询隐含陷阱
2022/04/12 MySQL