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 linecache.getline()读取文件中特定一行的脚本
Sep 06 Python
python实现将pvr格式转换成pvr.ccz的方法
Apr 28 Python
Python基于csv模块实现读取与写入csv数据的方法
Jan 18 Python
Python中defaultdict与lambda表达式用法实例小结
Apr 09 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
Jan 15 Python
深入了解Django View(视图系统)
Jul 23 Python
python调用Matplotlib绘制分布点图
Oct 18 Python
Python dict和defaultdict使用实例解析
Mar 12 Python
python:删除离群值操作(每一行为一类数据)
Jun 08 Python
Python使用socket_TCP实现小文件下载功能
Oct 09 Python
聊一聊python常用的编程模块
May 14 Python
Python实现随机生成迷宫并自动寻路
Jun 13 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中批量替换文件名的实现代码
2011/07/20 PHP
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
PHP扩展类型及安装方式解析
2020/04/27 PHP
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
jquery图片不完全按比例自动缩小的简单代码
2013/07/29 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
WebStorm ES6 语法支持设置&babel使用及自动编译(详解)
2017/09/08 Javascript
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
Vue.js 事件修饰符的使用教程
2018/11/01 Javascript
微信小程序实现蓝牙打印
2019/09/23 Javascript
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
2020/08/14 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
python3利用tcp实现文件夹远程传输
2018/07/28 Python
python实现简单图书管理系统
2019/11/22 Python
pytorch之添加BN的实现
2020/01/06 Python
简单了解Python write writelines区别
2020/02/27 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
2020/04/29 Python
Python实现删除某列中含有空值的行的示例代码
2020/07/20 Python
8种常用的Python工具
2020/08/05 Python
英国工艺品购物网站:Minerva Crafts
2018/01/29 全球购物
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
荷兰手表网站:Watch2Day
2018/07/02 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
关于爱情的广播稿
2014/01/16 职场文书
我的未来不是梦演讲稿
2014/09/02 职场文书
信访稳定工作汇报
2014/10/27 职场文书
经典导游欢迎词
2015/01/26 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
使用pytorch实现线性回归
2021/04/11 Python