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启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
Apr 09 Python
python文件读写并使用mysql批量插入示例分享(python操作mysql)
Feb 17 Python
pyqt4教程之messagebox使用示例分享
Mar 07 Python
python实现支持目录FTP上传下载文件的方法
Jun 03 Python
Python中getattr函数和hasattr函数作用详解
Jun 14 Python
Python实现文件内容批量追加的方法示例
Aug 29 Python
Anaconda入门使用总结
Apr 05 Python
python之super的使用小结
Aug 13 Python
对python中的iter()函数与next()函数详解
Oct 18 Python
python导包的几种方法(自定义包的生成以及导入详解)
Jul 15 Python
使用python动态生成波形曲线的实现
Dec 04 Python
Python+Matplotlib+LaTeX玩转数学公式
Feb 24 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
德生BCL3000的电路分析和打磨
2021/03/02 无线电
php中unlink()、mkdir()、rmdir()等方法的使用介绍
2012/12/21 PHP
一个比较不错的PHP日历类分享
2014/11/18 PHP
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
一个完整的php文件上传类实例讲解
2015/10/27 PHP
使用TextRange获取输入框中光标的位
2006/10/14 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
vue脚手架搭建项目的兼容性配置详解
2018/07/17 Javascript
通过webpack引入第三方库的方法
2018/07/20 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
2020/09/21 Javascript
Python实现两个list对应元素相减操作示例
2017/06/09 Python
Python判断以什么结尾以什么开头的实例
2018/10/27 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
ipython jupyter notebook中显示图像和数学公式实例
2020/04/15 Python
HTML5中的postMessage API基本使用教程
2016/05/20 HTML / CSS
SIXPAD智能健身仪英国官网:革命性的训练装备品牌
2018/09/27 全球购物
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
工程力学专业毕业生求职信
2013/10/06 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
元旦标语大全
2014/10/09 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
Python中super().__init__()测试以及理解
2021/12/06 Python
用Python实现屏幕截图详解
2022/01/22 Python
Java 超详细讲解设计模式之中的抽象工厂模式
2022/03/25 Java/Android