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 IDLE加上自动补全和历史功能
Nov 30 Python
Python实现将一个正整数分解质因数的方法分析
Dec 14 Python
python框架中flask知识点总结
Aug 17 Python
对python当中不在本路径的py文件的引用详解
Dec 15 Python
Python 正则表达式匹配字符串中的http链接方法
Dec 25 Python
python面向对象实现名片管理系统文件版
Apr 26 Python
django框架模板中定义变量(set variable in django template)的方法分析
Jun 24 Python
Python3 tkinter 实现文件读取及保存功能
Sep 12 Python
tensorflow没有output结点,存储成pb文件的例子
Jan 04 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
Apr 24 Python
Python logging模块写入中文出现乱码
May 21 Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 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中GET变量的使用
2006/10/09 PHP
在 PHP 中使用随机数的三个步骤
2006/10/09 PHP
php中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
php对文件夹进行相关操作(遍历、计算大小)
2015/11/04 PHP
Windows服务器中PHP如何安装redis扩展
2019/09/27 PHP
JS动画效果代码3
2008/04/03 Javascript
一个js写的日历(代码部分网摘)
2009/09/20 Javascript
jquery 双色表格实现代码
2009/12/08 Javascript
jQuery操作input值的各种方法总结
2013/11/21 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
获取阴历(农历)和当前日期的js代码
2016/02/15 Javascript
用NodeJS实现批量查询地理位置的经纬度接口
2016/08/16 NodeJs
移动端js触摸事件详解
2016/09/18 Javascript
Bootstrap CSS组件之导航条(navbar)
2016/12/17 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
2017/01/08 Javascript
Angular2库初探
2017/03/01 Javascript
angular中实现控制器之间传递参数的方式
2017/04/24 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
2019/09/26 Javascript
Vue实现点击按钮复制文本内容的例子
2019/11/09 Javascript
小程序Scroll-view上拉滚动刷新数据
2020/06/21 Javascript
python脚本开机自启的实现方法
2019/06/28 Python
使用django实现一个代码发布系统
2019/07/18 Python
想学画画?python满足你!
2020/12/24 Python
css3实现的下拉菜单效果示例
2014/01/22 HTML / CSS
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/01/13 面试题
应届生体育教师自荐信
2013/10/03 职场文书
大学生活动总结怎么写
2014/04/29 职场文书
节水口号标语
2014/06/19 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
2014年信息中心工作总结
2014/12/17 职场文书
会计工作总结范文2014
2014/12/23 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
JavaScript架构localStorage特殊场景下二次封装操作
2022/06/21 Javascript