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中定义结构体的方法
Mar 04 Python
Django接受前端数据的几种方法总结
Nov 04 Python
Python 实现购物商城,含有用户入口和商家入口的示例
Sep 15 Python
Python有序字典简单实现方法示例
Sep 28 Python
使用Python进行AES加密和解密的示例代码
Feb 02 Python
python通过伪装头部数据抵抗反爬虫的实例
May 07 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
使用python验证代理ip是否可用的实现方法
Jul 25 Python
python输出电脑上所有的串口名的方法
Jul 02 Python
python tkinter库实现气泡屏保和锁屏
Jul 29 Python
python如何使用Redis构建分布式锁
Jan 16 Python
python 爬取天气网卫星图片
Jun 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中$this->含义分析
2009/11/29 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
2014/07/22 PHP
PHP实现上传图片到 zimg 服务器
2016/10/19 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
2017/08/17 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
2018/04/21 PHP
javascript中的location用法简单介绍
2007/03/07 Javascript
ExtJS Ext.MessageBox.alert()弹出对话框详解
2010/04/02 Javascript
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
Javascript中String的常用方法实例分析
2015/06/13 Javascript
关于input全选反选恶心的异常情况
2016/07/24 Javascript
BOM系列第二篇之定时器requestAnimationFrame
2016/08/17 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
2016/09/23 Javascript
vue多级多选菜单组件开发
2020/09/08 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
JavaScript实现简单音乐播放器
2020/04/17 Javascript
JS原型对象操作实例分析
2020/06/06 Javascript
一些Python中的二维数组的操作方法
2015/05/02 Python
Zookeeper接口kazoo实例解析
2018/01/22 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
Python实现平行坐标图的两种方法小结
2019/07/04 Python
简单了解python协程的相关知识
2019/08/31 Python
python实现的汉诺塔算法示例
2019/10/23 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
CSS3 伪类选择器 nth-child()说明
2010/07/10 HTML / CSS
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
手机配件第一品牌:ZAGG
2017/05/28 全球购物
小学端午节活动方案
2014/03/13 职场文书
个人授权委托书范本
2014/04/03 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
Java Socket实现Redis客户端的详细说明
2021/05/26 Redis
Python多个MP4合成视频的实现方法
2021/07/16 Python
MySQL 开窗函数
2022/02/15 MySQL
win10截图快捷键win+shift+s没有反应无法截图怎么解决?
2022/08/14 数码科技