返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现归一化算法详情
  • 548
分享到

Python实现归一化算法详情

2024-04-02 19:04:59 548人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录1.前言                        

1.前言                                 

归一化算法NORMalization将数据处理成量纲一直的数据,一般限定在[0,1]、[-1,1]
一般在进行建模的时候需要进行数据归一化处理,

原因如下:

  • 降低计算难度
  • 有可能提高模型的预测精度
  • 消除量纲影响

下面介绍三种常见的标准化方法,分别是最大最小值、正态中心化、小数点定标

2.Min-Max方法

2.1 公式

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]]

2.4局限

  • 数据规模过大不适应
  • 数据归一化后范围在[0,1],对于一些有负有正数的原始数据慎用

3 Z-score标准化

3.1 公式

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]]

3.4 局限

  • 对样本量少的数据,表现不好
  • 标准化后范围在有负有正,范围在[-1,1]

4 小数定标法

4.1 公式

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]]

4.4 局限

  • 受到最大值影响较大

到此这篇关于python实现归一化算法详情的文章就介绍到这了,更多相关Python归一化算法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python实现归一化算法详情

本文链接: https://lsjlt.com/news/143091.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python实现归一化算法详情
    目录1.前言                         ...
    99+
    2024-04-02
  • Python如何实现归一化算法
    今天小编给大家分享一下Python如何实现归一化算法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.前言   &...
    99+
    2023-06-29
  • Java实现一致性Hash算法详情
    目录1. 实现原理2. 解决数据倾斜的问题2.1 什么是数据倾斜?2.2 解决3. 代码实现3.1 ConsistentHash3.2 Hash3.3 Utils3.4 main1....
    99+
    2024-04-02
  • Python实例详解递归算法
    递归是一种较为抽象的数学逻辑,可以简单的理解为「程序调用自身的算法」。 维基百科对递归的解释是: 递归(英语:Recursion),又译为递回,在数学与计算机科学中,是指在函数的定义...
    99+
    2024-04-02
  • python实现线性回归算法
    本文用python实现线性回归算法,供大家参考,具体内容如下 # -*- coding: utf-8 -*- """ Created on Fri Oct 11 19:25:11...
    99+
    2024-04-02
  • pandas归一化与反归一化操作实现
    import numpy as np import pandas as pd import matplotlib.pylab as plt if __name__ == '__m...
    99+
    2023-01-28
    pandas归一化 pandas反归一化
  • python中怎么实现一个抽样回归算法
    本篇文章为大家展示了python中怎么实现一个抽样回归算法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。12 抽查回归算法1 算法概要讨论以下算法 线性算法线性回归RIdge 岭回归LASSO 线性...
    99+
    2023-06-19
  • 如何在Java与Python实现一个归并排序算法
    如何在Java与Python实现一个归并排序算法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。归并排序里运用到算法里很重要的一个思想——分治法:将原问题分解为几个规模较小但...
    99+
    2023-05-31
    归并排序 java python
  • 详解Python如何实现尾递归优化
    目录一般递归与尾递归一般递归尾递归C中尾递归的优化Python开启尾递归优化一般递归与尾递归 一般递归 def normal_recursion(n): if n == 1:...
    99+
    2024-04-02
  • php实现归并排序算法的方法详解
    目录php实现归并排序算法归并排序原理总结php实现归并排序算法 归并排序算法的复杂度是O(nlogn)。 代码如下,只需要clone下来执行composer install然后执行...
    99+
    2024-04-02
  • Python编程中归并排序算法的实现步骤详解
    基本思想:归并排序是一种典型的分治思想,把一个无序列表一分为二,对每个子序列再一分为二,继续下去,直到无法再进行划分为止。然后,就开始合并的过程,对每个子序列和另外一个子序列的元素进行比较,依次把小元素放入...
    99+
    2022-06-04
    算法 详解 步骤
  • Python实现的归并排序算法示例
    本文实例讲述了Python实现的归并排序算法。分享给大家供大家参考,具体如下: 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用...
    99+
    2022-06-04
    示例 算法 Python
  • python二分查找算法的递归实现方法
    本文实例讲述了python二分查找算法的递归实现方法。分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码: def binarySearch(alist, item): first = ...
    99+
    2022-06-04
    递归 算法 方法
  • Python实现KPM算法详解
    目录知识点说明:一、要获取KPM算法的next[]数组二、KMP函数知识点说明: 先说前缀,和后缀吧 比如有一个串:abab 则在下标为3处的(前缀和后缀都要比下标出的长度小1,此处...
    99+
    2024-04-02
  • c# 中怎么实现一个阶乘递归算法
    c# 中怎么实现一个阶乘递归算法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。using System;using System.Collections...
    99+
    2023-06-03
  • 超详细解析C++实现归并排序算法
    目录一、前言分治算法分治算法解题方法二、归并排序1.问题分析2.算法设计3.算法分析三、AC代码一、前言 分治算法 归并排序,其实就是一种分治算法 ,那么在了解归并排序之前,我们先来...
    99+
    2024-04-02
  • python装饰器与递归算法详解
    1、python装饰器 刚刚接触python的装饰器,简直懵逼了,直接不懂什么意思啊有木有,自己都忘了走了多少遍Debug,查了多少遍资料,猜有点点开始明白了。总结了一下解释得比较好的,通俗易懂的来说明一下...
    99+
    2022-06-04
    递归 算法 详解
  • python实现折半查找和归并排序算法
    今天依旧是学算法,前几天在搞bbs项目,界面也很丑,评论功能好像也有BUG。现在不搞了,得学下算法和数据结构,笔试过不了,连面试的机会都没有…… 今天学了折半查找算法,折半查找是蛮简单的,但是归并排序我就挺...
    99+
    2022-06-04
    算法 python
  • python实现汉诺塔递归算法经典案例
    学到递归的时候有个汉诺塔的练习,汉诺塔应该是学习计算机递归算法的经典入门案例了,所以本人觉得可以写篇博客来表达一下自己的见解。这markdown编辑器还不怎么会用,可能写的有点格式有点丑啦,各位看官...
    99+
    2022-06-04
    递归 算法 案例
  • 利用java 怎么实现一个归并排序算法
    本篇文章给大家分享的是有关利用java 怎么实现一个归并排序算法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 归并排序算法,顾名思义,是一种先分再合的算法,其算法思...
    99+
    2023-05-31
    java 归并排序算法 ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作