数据归一化及三种方法(python)

数据归一化及三种方法(python)数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。以下是三种常用的归一化方法:min-max标准化(Min-MaxNormalization)也称为离差标准化,…

大家好,又见面了,我是你们的朋友全栈君。

数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。以下是三种常用的归一化方法:

min-max标准化(Min-Max Normalization)

也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 , 1]之间。转换函数如下: 
这里写图片描述 
其中max为样本数据的最大值,min为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

min-max标准化python代码如下:

import numpy as np

arr = np.asarray([0, 10, 50, 80, 100])
for x in arr:
    x = float(x - np.min(arr))/(np.max(arr)- np.min(arr))
    print x

# output
# 0.0
# 0.1
# 0.5
# 0.8
# 1.0

使用这种方法的目的包括:

  • 1、对于方差非常小的属性可以增强其稳定性;
  • 2、维持稀疏矩阵中为0的条目。

下面将数据缩至0-1之间,采用MinMaxScaler函数

from sklearn import preprocessing   

import numpy as np  

X = np.array([[ 1., -1.,  2.],  

              [ 2.,  0.,  0.],  

              [ 0.,  1., -1.]])  

min_max_scaler = preprocessing.MinMaxScaler()  

X_minMax = min_max_scaler.fit_transform(X)  

最后输出:

array([[ 0.5       ,  0.        ,  1.        ],  
       [ 1.        ,  0.5       ,  0.33333333],  
       [ 0.        ,  1.        ,  0.        ]])  

 

测试用例:

注意:这些变换都是对列进行处理。

当然,在构造类对象的时候也可以直接指定最大最小值的范围:feature_range=(min, max),此时应用的公式变为:

X_std=(X-X.min(axis=0))/(X.max(axis=0)-X.min(axis=0))  
X_minmax=X_std/(X.max(axis=0)-X.min(axis=0))+X.min(axis=0))

​​​

Z-score标准化方法

也称为均值归一化(mean normaliztion), 给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1。转化函数为: 
这里写图片描述 
其中 μμ 为所有样本数据的均值,σσ为所有样本数据的标准差。

import numpy as np

arr = np.asarray([0, 10, 50, 80, 100])
for x in arr:
    x = float(x - arr.mean())/arr.std()
    print x

# output
# -1.24101045599
# -0.982466610991
# 0.0517087689995
# 0.827340303992
# 1.34442799399

 

函数转换

log函数转换

通过以10为底的log函数转换的方法同样可以实现归一下,具体方法如下:

数据归一化及三种方法(python)

使用注意:max为样本数据最大值,并且所有的数据都要大于等于1。

atan函数转换

通过反正切函数也可以实现数据的归一化:

数据归一化及三种方法(python)

使用这个方法需要注意的是如果想映射的区间为[0,1],则数据都应该大于等于0,小于0的数据将被映射到[-1,0]区间上,而并非所有数据标准化的结果都映射到[0,1]区间上。

Sigmoid函数转换

Sigmoid函数是一个具有S形曲线的函数,是良好的阈值函数,在(0, 0.5)处中心对称,在(0, 0.5)附近有比较大的斜率,而当数据趋向于正无穷和负无穷的时候,映射出来的值就会无限趋向于1和0,是个人非常喜欢的“归一化方法”,之所以打引号是因为我觉得Sigmoid函数在阈值分割上也有很不错的表现,根据公式的改变,就可以改变分割阈值,这里作为归一化方法,我们只考虑(0, 0.5)作为分割阈值的点的情况:

 

数据归一化及三种方法(python)

def sigmoid(X,useStatus):
    if useStatus:
        return 1.0 / (1 + np.exp(-float(X)))
    else:
        return float(X)

参考来源:点击打开链接 https://blog.csdn.net/weixin_42575020/article/details/82944291

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152298.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何严格设置php中session过期时间

    如何严格设置php中session过期时间

    2021年11月6日
    40
  • 公网ip远程访问nas_无公网ip访问家庭nas

    公网ip远程访问nas_无公网ip访问家庭nas2018-12-0113:45:00770点赞5996收藏566评论上次的那篇NAS的文章有着很不错的热度,首先是感谢观众老爷们的大力支持啦,那么这篇文章主要是回答一些评论中的问题,而且也为那些第一次接触NAS的小伙伴提供一个简单的参考,如果对这方面想有所了解的,请耐心阅读下面的内容,个人记忆力有限,有些东西记不起来了,如有遗漏或者错误,请斧正。废话不多说,我们开始。如何申请公网IP这个是大家问的最多的,而且许多问题的根本原因都是公网IP造成的,那么,首先我们要知道一点基础的…

    2022年8月30日
    3
  • scope=prototype有什么作用_prototype设计模式

    scope=prototype有什么作用_prototype设计模式@Scope(“prototype”)//多例模式

    2022年8月19日
    9
  • Pytest(6)重复运行用例pytest-repeat「建议收藏」

    Pytest(6)重复运行用例pytest-repeat「建议收藏」前言平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来。自动化运行用例时候,也会出现偶然的bug,可以针对单个用例,

    2022年7月31日
    4
  • CFileDialog类应用详解

    CFileDialog类应用详解原文地址 http blog csdn net bxwang1 article details 构造函数原型 CFileDialog BOOLbOpenFil nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp LPCTSTRlpszD NULL nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp LPCTSTRlpszF NULL nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp D

    2025年11月9日
    7
  • QT 实现 RTSP 视频流服务器[通俗易懂]

    QT 实现 RTSP 视频流服务器[通俗易懂]uos操作系统中使用QT开发RTSP视频流服务器,以下的实现方式使用的是单播方式。可以通过自己开发的rtsp服务器将摄像头的数据推送到服务器中,其他用户可以通过访问视频流地址,直接访问摄像头的内容,也就是通常说的摄像头直播。本篇文章使用开源框架live555开发一个属于自己的视频流服务器。

    2022年10月20日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号