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 相关文章推荐
pydev使用wxpython找不到路径的解决方法
Feb 10 Python
Python对两个有序列表进行合并和排序的例子
Jun 13 Python
python通过yield实现数组全排列的方法
Mar 18 Python
改进Django中的表单的简单方法
Jul 17 Python
Python中MySQL数据迁移到MongoDB脚本的方法
Apr 28 Python
Python的装饰器使用详解
Jun 26 Python
python遍历文件夹下所有excel文件
Jan 03 Python
django将网络中的图片,保存成model中的ImageField的实例
Aug 07 Python
如何在django中运行scrapy框架
Apr 22 Python
keras 使用Lambda 快速新建层 添加多个参数操作
Jun 10 Python
Python基于time模块表示时间常用方法
Jun 18 Python
详解MindSpore自定义模型损失函数
Jun 30 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
中国广播史趣谈 — 几个历史第一次
2021/03/01 无线电
php递归创建目录的方法
2015/02/02 PHP
64位windows系统下安装Memcache缓存
2015/12/06 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
PHP二维数组矩形转置实例
2016/07/20 PHP
php微信开发自定义菜单
2016/08/27 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
extjs tabpanel限制选项卡数量实现思路及代码
2013/04/02 Javascript
js文件Cookie存取值示例代码
2014/02/20 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
五种js判断是否为整数类型方式
2015/12/03 Javascript
简单谈谈json跨域
2016/03/13 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
2017/01/22 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
2017/01/24 Javascript
canvas的神奇用法
2017/02/03 Javascript
VUE 全局变量的几种实现方式
2018/08/22 Javascript
JavaScript闭包与作用域链实例分析
2019/01/21 Javascript
python多线程threading.Lock锁用法实例
2014/11/01 Python
Python 常用string函数详解
2016/05/30 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
Pycharm连接远程服务器过程图解
2020/04/30 Python
用python写PDF转换器的实现
2020/10/29 Python
墨西哥运动服饰和鞋网上商店:Netshoes墨西哥
2016/07/28 全球购物
厨房工作人员岗位职责
2013/11/15 职场文书
公司离职证明标准格式
2014/11/18 职场文书
2014年超市工作总结
2014/11/19 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
oracle表分区的概念及操作
2021/04/24 Oracle
JavaScript数组 几个常用方法总结
2021/11/11 Javascript