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中的分片与截断序列
Aug 09 Python
python中异常报错处理方法汇总
Nov 20 Python
Python中生成Epoch的方法
Apr 26 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
Nov 30 Python
python获取酷狗音乐top500的下载地址 MP3格式
Apr 17 Python
python spyder中读取txt为图片的方法
Apr 27 Python
python3连接MySQL数据库实例详解
May 24 Python
Django Rest framework之认证的实现代码
Dec 17 Python
django的分页器Paginator 从django中导入类
Jul 25 Python
python调用支付宝支付接口流程
Aug 15 Python
Python办公自动化之Excel(中)
May 24 Python
Python集合set()使用的方法详解
Mar 18 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
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2020/01/22 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
jQuery图片的展开和收缩实现代码
2013/04/16 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
webpack4的迁移的使用方法
2018/05/25 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
python 列表,数组,矩阵两两转换tolist()的实例
2018/04/04 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
pandas 将索引值相加的方法
2018/11/15 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
Python批量获取并保存手机号归属地和运营商的示例
2020/10/09 Python
html5 postMessage前端跨域并前端监听的方法示例
2018/11/01 HTML / CSS
德国体育用品网上商店:SC24.com
2016/08/01 全球购物
家长通知书教师评语
2014/04/17 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
民主评议教师党员自我评价
2015/03/04 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
小学运动会加油词
2015/07/18 职场文书
七年级英语教学反思
2016/02/15 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
写作技巧:怎样写好一份优秀工作总结?
2019/08/14 职场文书
python迷宫问题深度优先遍历实例
2021/06/20 Python
Python pyecharts绘制条形图详解
2022/04/02 Python