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实现爬虫统计学校BBS男女比例之数据处理(三)
Dec 31 Python
Python读写Json涉及到中文的处理方法
Sep 12 Python
python中的计时器timeit的使用方法
Oct 20 Python
详解python的ORM中Pony用法
Feb 09 Python
python字符串常用方法
Jun 14 Python
Python for循环与getitem的关系详解
Jan 02 Python
Python操作Sqlite正确实现方法解析
Feb 05 Python
Django 后台带有字典的列表数据与页面js交互实例
Apr 03 Python
快速创建python 虚拟环境
Nov 28 Python
python字符串常规操作大全
May 02 Python
python实现简单的聊天小程序
Jul 07 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 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数据库连接
2006/10/09 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
Yii2.0建立公共方法简单示例
2019/01/29 PHP
javascript 数组的方法集合
2008/06/05 Javascript
40款非常有用的 jQuery 插件推荐(系列一)
2011/12/21 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
2013/01/25 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
总结JavaScript三种数据存储方式之间的区别
2016/05/03 Javascript
JS使用JSON作为参数实例分析
2016/06/23 Javascript
Augularjs-起步详解
2016/07/08 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
Javascript this 函数深入详解
2016/12/13 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
2020/11/03 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
Python实现识别手写数字大纲
2018/01/29 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
Python数据可视化实现漏斗图过程图解
2020/07/20 Python
美国狗旅行和户外用品领先供应商:kurgo
2020/08/18 全球购物
学期研究性学习个人的自我评价
2014/01/09 职场文书
个人合作协议书范本
2014/04/18 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
挂牌仪式策划方案
2014/05/18 职场文书
六年级小学生评语
2014/12/26 职场文书
酒店员工辞职信范文
2015/02/28 职场文书
党员廉政准则心得体会
2016/01/20 职场文书