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中如何使用朴素贝叶斯算法
Apr 06 Python
numpy找出array中的最大值,最小值实例
Apr 03 Python
python 读取视频,处理后,实时计算帧数fps的方法
Jul 10 Python
python批量识别图片指定区域文字内容
Apr 30 Python
利用python开发app实战的方法
Jul 09 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
Oct 23 Python
IronPython连接MySQL的方法步骤
Dec 27 Python
pytorch实现特殊的Module--Sqeuential三种写法
Jan 15 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
Feb 26 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
Apr 03 Python
Python学习之路安装pycharm的教程详解
Jun 17 Python
Python中的协程(Coroutine)操作模块(greenlet、gevent)
May 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
PHP 程序员应该使用的10个组件
2009/10/31 PHP
php报表之jpgraph柱状图实例代码
2011/08/22 PHP
回帖脱衣服的图片实现代码
2014/02/15 PHP
PHP中的类型约束介绍
2015/05/11 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
javascript 树控件 比较好用
2009/06/11 Javascript
Prototype 学习 Prototype对象
2009/07/12 Javascript
jQueryUI写一个调整分类的拖放效果实现代码
2012/05/10 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
jquery删除提示框弹出是否删除对话框
2014/01/07 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
js对象的复制继承实例
2015/01/10 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
jQuery实现图片轮播特效代码分享
2015/09/15 Javascript
js删除数组元素、清空数组的简单方法(必看)
2016/07/27 Javascript
老生常谈JavaScript中的this关键字
2016/10/01 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
JS常用加密编码与算法实例总结
2016/12/22 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
Python中获取对象信息的方法
2015/04/27 Python
Python中shape计算矩阵的方法示例
2017/04/21 Python
python编写分类决策树的代码
2017/12/21 Python
python生成特定分布数的实例
2019/12/05 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
美国大型的健身社区和补充商店:Bodybuilding.com
2016/09/06 全球购物
建筑班组长岗位职责
2014/01/02 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
学校财务管理制度
2015/08/04 职场文书
歌咏比赛口号大全
2015/12/25 职场文书
2016新党章学习心得体会
2016/01/15 职场文书
《地震中的父与子》教学反思
2016/02/16 职场文书
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle
《巫师》是美食游戏?CDPR10月将推出《巫师》官方食谱
2022/04/03 其他游戏