文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python数据标准化

2023-09-10 16:39

关注

目录

一.数据标准化方式

1.实现中心化和正态分布的Z-Score

2.实现归一化的Max-Min

3.用于稀疏数据的MaxAbs

4.针对离群点的RobustScaler

二.Python针对以上几种标准化方法处理数据

三.总结  


1.实现中心化和正态分布的Z-Score

        Z-Score标准化是基于原始数据的均值和标准差进行的标准化,假设原转换的数据为x,新数据为x',那么x'=(x-mean)/std,其中mean和std为x所在列的均值和标准差。

        这种方法适合大多数类型的数据,也是很多工具的默认标准化方法。标准化之后的数据是以0为均值,方差为1的正态分布。但是Z-Score方法是一种中心化方法,会改变原有数据的分布结构,不适合用于对稀疏数据做处理。

在很多时候,数据集会存在稀疏性特征,表现为标准差小。并有很多元素的值为0.最常见的稀疏数据集是用来做协同过滤的数据集,绝大部分的数据都是0,仅有少部分数据为1。对稀疏数据做标准化,不能采用中心化的方式,否则会破坏稀疏数据的结构。

2.实现归一化的Max-Min

        Max-Min标准化方法是对原始数据进行线性变换,假设原转换的数据为x,新数据为x',那么x'=(x-min)/(max-min),其中min和max为x所在列的最小值和最大值。

        这种标准化方法的应用非常广泛,得到的数据会完全落入[0,1],区间内(Z-Score则没有类似区间),这种方法能使数据归一化而落到一定的区间内,同时还能较好地保持原有数据结构。

3.用于稀疏数据的MaxAbs

        最大值绝对值标准化(MaxAbs)即根据最大值的绝对值进行标准化,假设原转换的数据为x,新数据为x',那么x'=x/|max|,其中max为x所在列的最大值。

        MaxAbs方法跟Max-Min用法类似,也是将数据落入一定区间,但该方法的数据区间为[-1,1]。MaxAbs也具有不破坏原有数据分布结构的特点,因此也可以用于稀疏数据、稀疏的CSR或CSC矩阵。

4.针对离群点的RobustScaler

        某种情况下,假如数据集中有离群点,我们可以使用Z-Score进行标准化,但是标准化之后的数据并不理想,因为异常点的特征往往在标准化之后便容易失去离群特征。此时可以使用RobustScaler针对离群点做标准化处理,该方法对数据中心化和数据的缩放健壮性有更强的参数控制能力。

import numpy as npfrom sklearn import preprocessingimport matplotlib.pyplot as pltdata=np.loadtxt(r"F:\小橙书\chapter3\data6.txt",delimiter='\t')# Z-Score标准化zscore_scaler=preprocessing.StandardScaler()data_scaler_1=zscore_scaler.fit_transform(data)# Max-Min标准化minmax_scaler=preprocessing.MinMaxScaler()data_scaler_2=minmax_scaler.fit_transform(data)# MaxAbs标准化maxabs_scaler=preprocessing.MaxAbsScaler()data_scaler_3=maxabs_scaler.fit_transform(data)# RobustScaler准化robust_scaler=preprocessing.RobustScaler()data_scaler_4=robust_scaler.fit_transform(data)data_list=[data,data_scaler_1,data_scaler_2,data_scaler_3,data_scaler_4]scaler_list=[15,10,15,10,15,10] #创建点尺寸列表color_list=['pink','green','red','orange','blue']marker_list=['o',',','+','s','p']title_list=['source data','zscore_scaler','minmax_scaler','maxabs_scaler','robust_scaler']plt.figure(figsize=(15,8))for i,data_single in enumerate(data_list):    plt.subplot(2,3,i+1)    plt.scatter(data_single[:,0],data_single[:,-1]               ,s=scaler_list[i]               ,marker=marker_list[i]               ,c=color_list[i])    plt.title=title_list[i]plt.suptitle("row data and standardized data")plt.show()

(1)如果要做中心化处理,并且对数据分布有正态需求,则使用Z-Score方法。

(2)如果要进行0-1标准化或要指定标准化后的数据分布范围,Max-Min标准化或MaxAbs标准化是比较好的选择。

(3)如果要对稀疏数据进行处理,Max-Min标准化或MaxAbs标准化仍是理想方法。

(4)如果要最大限度保留数据集中的异常,则使用RobustScaler方法。

来源地址:https://blog.csdn.net/weixin_60200880/article/details/127214706

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯