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的Django框架中simple-todo工具的简单使用
May 30 Python
Python中的TCP socket写法示例
May 11 Python
python一行sql太长折成多行并且有多个参数的方法
Jul 19 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
python 整数越界问题详解
Jun 27 Python
使用 Django Highcharts 实现数据可视化过程解析
Jul 31 Python
在django中自定义字段Field详解
Dec 03 Python
Python如何把多个PDF文件合并代码实例
Feb 13 Python
Python使用type动态创建类操作示例
Feb 29 Python
bat批处理之字符串操作的实现
Mar 16 Python
Python集合set()使用的方法详解
Mar 18 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
PHP自动生成表单代码分享
2015/06/19 PHP
html下载本地
2006/06/19 Javascript
根据地区不同显示时间的javascript代码
2007/08/13 Javascript
JavaScript 学习初步 入门教程
2010/03/25 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
2013/12/31 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
JS常用函数使用指南
2014/11/23 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
简单实现JS对dom操作封装
2015/12/02 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
JS代码实现根据时间变换页面背景效果
2016/06/16 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
理解JavaScript原型链
2016/10/25 Javascript
yarn的使用与升级Node.js的方法详解
2017/06/04 Javascript
webpack写jquery插件的环境配置
2017/12/21 jQuery
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
浅析js中mvvm模式实现的原理
2018/10/06 Javascript
jquery分页插件pagination使用教程
2018/10/23 jQuery
Vue中的情侣属性$dispatch和$broadcast详解
2019/03/07 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
初步理解Python进程的信号通讯
2015/04/09 Python
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
使用Python完成15位18位身份证的互转功能
2019/11/06 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
市场营销专业推荐信
2013/11/03 职场文书
运动会广播稿30字
2014/01/21 职场文书
列车长先进事迹材料
2014/01/25 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
总经理司机岗位职责
2015/04/10 职场文书
2016年师德学习心得体会
2016/01/12 职场文书
资产移交协议书
2016/03/24 职场文书