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读取浮点数和读取文本文件示例
May 06 Python
在Python下尝试多线程编程
Apr 28 Python
Python实现的Excel文件读写类
Jul 30 Python
浅谈function(函数)中的动态参数
Apr 30 Python
python3设计模式之简单工厂模式
Oct 17 Python
Python实现判断给定列表是否有重复元素的方法
Apr 11 Python
python requests证书问题解决
Sep 05 Python
基于python+selenium的二次封装的实现
Jan 06 Python
python matplotlib中的subplot函数使用详解
Jan 19 Python
python3 sorted 如何实现自定义排序标准
Mar 12 Python
Python爬虫教程之利用正则表达式匹配网页内容
Dec 08 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
Jun 25 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
第十三节 对象串行化 [13]
2006/10/09 PHP
十天学会php之第五天
2006/10/09 PHP
PHP syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
在smarty模板中使用PHP函数的方法
2011/04/23 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
js实现简洁大方的二级下拉菜单效果代码
2015/09/01 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
2015/10/30 Javascript
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
2017/02/13 Javascript
js和jquery中获取非行间样式
2017/05/05 jQuery
jquery拖动改变div大小
2017/07/04 jQuery
Vue中定义全局变量与常量的各种方式详解
2017/08/23 Javascript
JS实现的类似微信聊天效果示例
2019/01/29 Javascript
JS实现小米轮播图
2020/09/21 Javascript
[00:34]TI7不朽珍藏III——纯金地穴编织者饰品展示
2017/07/15 DOTA
python中base64加密解密方法实例分析
2015/05/16 Python
python 读取目录下csv文件并绘制曲线v111的方法
2018/07/06 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
简单了解python filter、map、reduce的区别
2020/01/14 Python
python encrypt 实现AES加密的实例详解
2020/02/20 Python
Python yield的用法实例分析
2020/03/06 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
2021/03/04 Python
Weblogc domain问题
2014/01/27 面试题
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
报关员个人职业生涯规划书
2014/03/12 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
学校教师读书活动总结
2014/07/08 职场文书
如何写观后感
2015/06/19 职场文书
安全伴我行主题班会
2015/08/13 职场文书
Pygame如何使用精灵和碰撞检测
2021/11/17 Python
win11无线投屏在哪设置? win11无线投屏功能的使用方法
2022/04/08 数码科技