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数据结构之二叉树的统计与转换实例
Apr 29 Python
用Python编写一个简单的FUSE文件系统的教程
Apr 02 Python
Python中函数的多种格式和使用实例及小技巧
Apr 13 Python
python使用fcntl模块实现程序加锁功能示例
Jun 23 Python
Python+Turtle动态绘制一棵树实例分享
Jan 16 Python
一篇文章读懂Python赋值与拷贝
Apr 19 Python
python实现反转部分单向链表
Sep 27 Python
Python django使用多进程连接mysql错误的解决方法
Oct 08 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
Jun 14 Python
python regex库实例用法总结
Jan 03 Python
基于PyTorch中view的用法说明
Mar 03 Python
Python使用pyecharts控件绘制图表
Jun 05 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对mongodb的扩展(初出茅庐)
2012/11/11 PHP
php设置编码格式的方法
2013/03/05 PHP
PHP生成RSS文件类实例
2014/12/05 PHP
ecshop实现smtp发送邮件
2015/02/03 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
javascript异步编程的4种方法
2014/02/19 Javascript
JavaScript window.location对象
2014/11/14 Javascript
DOM基础教程之使用DOM控制表单
2015/01/20 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
浅谈JS使用[ ]来访问对象属性
2016/09/21 Javascript
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
vue-router传参用法详解
2019/01/19 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
js实现多图和单图上传显示
2019/12/18 Javascript
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
python中类的一些方法分析
2014/09/25 Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
Python3+Appium安装使用教程
2019/07/05 Python
pycharm配置git(图文教程)
2019/08/16 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
Python使用struct处理二进制(pack和unpack用法)
2020/11/12 Python
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
网游商务专员求职信
2013/10/15 职场文书
公司新员工的演讲稿注意事项
2014/01/01 职场文书
便利店投资创业计划书
2014/02/08 职场文书
会展策划与管理专业求职信
2014/06/09 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书
赞美教师的句子
2019/09/02 职场文书