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采用requests库模拟登录和抓取数据的简单示例
Jul 05 Python
Python深入学习之装饰器
Aug 31 Python
Python Web框架Flask中使用百度云存储BCS实例
Feb 08 Python
Python3使用正则表达式爬取内涵段子示例
Apr 22 Python
python traceback捕获并打印异常的方法
Aug 31 Python
Python 读写文件的操作代码
Sep 20 Python
python 缺失值处理的方法(Imputation)
Jul 02 Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 Python
Python使用python-docx读写word文档
Aug 26 Python
Python selenium爬取微博数据代码实例
May 22 Python
PyTorch的torch.cat用法
Jun 28 Python
Python中request的基本使用解决乱码问题
Apr 12 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上传图片进行等比缩放可增加水印功能
2014/01/13 PHP
WordPress中创建用户角色的相关PHP函数使用详解
2015/12/25 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
PHP设计模式之工厂模式详解
2017/10/24 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
用js判断浏览器是否是IE的比较好的办法
2007/05/08 Javascript
js正确获取元素样式详解
2009/08/07 Javascript
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
javascript获取ckeditor编辑器的值(实现代码)
2013/11/18 Javascript
jquery控制页面部分刷新的方法
2015/06/24 Javascript
jQuery stop()用法实例详解
2016/07/28 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
vue开发移动端底部导航条功能
2020/04/08 Javascript
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
零基础学Python(一)Python环境安装
2014/08/20 Python
Python运算符重载用法实例分析
2015/06/01 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
详解django中使用定时任务的方法
2018/09/27 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
python 函数内部修改外部变量的方法
2018/12/18 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
FFrpc python客户端lib使用解析
2019/08/24 Python
Python pandas.DataFrame 找出有空值的行
2019/09/09 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
美国美妆网站:B-Glowing
2016/10/12 全球购物
大专计算机个人求职的自我评价
2013/10/21 职场文书
大学生饮食连锁店创业计划书
2014/01/17 职场文书
教师见习期自我鉴定
2014/04/28 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
小人国观后感
2015/06/11 职场文书
围城读书笔记
2015/06/26 职场文书
生日宴会家属答谢词
2015/09/29 职场文书