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框架中的QuerySets
Apr 20 Python
举例讲解Linux系统下Python调用系统Shell的方法
Nov 07 Python
Python for Informatics 第11章之正则表达式(四)
Apr 21 Python
Linux 下 Python 实现按任意键退出的实现方法
Sep 25 Python
Python 基础教程之包和类的用法
Feb 23 Python
R vs. Python 数据分析中谁与争锋?
Oct 18 Python
Python3 单行多行万能正则匹配方法
Jan 07 Python
Python搭建Spark分布式集群环境
Jul 05 Python
使用python os模块复制文件到指定文件夹的方法
Aug 22 Python
利用python计算时间差(返回天数)
Sep 07 Python
Python异常原理及异常捕捉实现过程解析
Mar 25 Python
利用PyTorch实现VGG16教程
Jun 24 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
一个取得文件扩展名的函数
2006/10/09 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
PHP格式化MYSQL返回float类型的方法
2016/03/30 PHP
mysql_escape_string()函数用法分析
2016/04/25 PHP
php中的登陆login实例代码
2016/06/20 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
2016/11/16 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
JS函数重载的解决方案
2014/05/13 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
javascript常用函数(2)
2015/11/05 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
2020/04/28 Javascript
webpack+vue.js快速入门教程
2016/10/12 Javascript
完美解决spring websocket自动断开连接再创建引发的问题
2017/03/02 Javascript
在javaScript中检测数据类型的几种方式小结
2017/03/04 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
2017/07/21 Javascript
初学者AngularJS的环境搭建过程
2017/10/27 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
vue与django集成打包的实现方法
2019/11/11 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
python分割和拼接字符串
2013/11/01 Python
python实现360的字符显示界面
2014/02/21 Python
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
如何利用python读取micaps文件详解
2020/10/18 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
波兰运动鞋网上商店:e-Sporting
2018/02/16 全球购物
物业管理大学生个人的自我评价
2013/10/10 职场文书
家长会演讲稿范文
2014/01/10 职场文书
国际会计专业求职信
2014/08/04 职场文书
创业计划书之养殖业
2019/10/11 职场文书
MySQL分区表实现按月份归类
2021/11/01 MySQL