草庐IT

数据挖掘(2.3)--数据预处理

码银 2023-04-13 原文

目录

三、数据集成和转换

1.数据集成 

2.数据冗余性 

2.1 皮尔森相关系数

2.2卡方检验 

3.数据转换

四、数据的规约和变换

1.数据归约

2数据离散化


三、数据集成和转换

1.数据集成 

数据集成是将不同来源的数据整合并一致地存储起来的过程

不同来源的数据可能有不同的格式、不同的元信息和不同的表示方式等。

首先需要将它们变成一致的形式。

通常这个过程牵涉到数据架构的集成,处理属性值冲突,处理数据冗余性,对数据进行转化等的处理过程。

其中两个主要的问题:数据冗余和数据转换


2.数据冗余性 

原因:

数据冗余可能由许多技术和业务上的原因导致,

同一属性或对象在不同的数据库中的名称可能是不同的,

某些属性可能是由其他属性导出的。

2.1 皮尔森相关系数

皮尔森相关系数是计算两个数数值向量之间的相关性

此图,纯手工技艺。

当相关系数大于0时,称两个向量正相关;

当相关系数小于0时,称两个向量负相关;

当相关系数等于0时,称两个向量不相关。

容易得出,相关系数的取值范围是[-1,1]。

热力图展示环节 (matplotlib库的问题,导致热力图显示不全,建议升版本或降低版本

python使用corr()函数计算数据中两两元素的皮尔系数 

2.2卡方检验 

 对于非数值型的变量,计算其相关性可以使用卡方检验方法进行,卡方检验的计算方式为:

求和是对每一种不同的变量取值情形进行的,Oi是实际观测到的概率,而Ei是在变量彼此独立的假设下该情况发生概率的估计。


3.数据转换

数据在集成过程中很多情况下需要进行转换,数据转换包括平滑、聚合、泛化、规范化、属性和特征的重构等操作。
(1)数据平滑。数据平滑是将噪声从数据中移除的过程。数据平滑通常是对数据本身进行的,如在连续性的假设下,对时间序列进行平滑,以降低异常点的影响;数据平滑有时也指对概率的平滑。
(2)数据聚合。数据聚合是将数据进行总结描述的过程。数据聚合的目的一般是为了对数据进行统计分析,数据立方体和在线分析处理(OLAP)都是数据聚合的形式。
(3)数据泛化。数据泛化是将数据在概念层次上转化为较高层次的概念的过程。
(4)数据规范化。数据规范化是将数据的范围变换到一个比较小的、确定的范围的过程。数据规范化在一些机器学习方法的预处理中比较常用,可以改善分类效果和抑制过学习。常用的数据规范化方法有最小最大规范化、2-score规范化和十进制比例规范化等。 


 如下的公式是最小最大规范化的例子,它将数据映射到[0,1] 区间。

z-score规范化使用数据的均值μ和标准差σ来将数据转化到某个区间,如下的公式为z-score标准化的例子,规范化后的数据均值为0,标准差为1。

 

十进制比例规范化使用数据绝对值的极值进行规范化.对数据仅使用十进制放缩的方式进行规范化。如要将466,33,- 100,-10这几个数进行规范化,结果为:0.466,0.033,-0.1,0.01。

四、数据的规约和变换

1.数据归约

数据归约是用更简化的方式来表示数据集,使得简化后的表示可以用较少的数据量来产生与挖掘全体数据类似的效果。
数据归约可以从几个方面入手:

  • 如果对数据的每个维度的物理意义很清楚,就可以舍弃某些无用的维度,并使用平均值、汇总和计数等方式来进行聚合表示,这种方式称为数据立方体聚合
  • 如果数据只有有些维度对数据挖掘有益,就可以去除不重要的维度,保留对挖掘有帮助的维度,这种方式称为维度归约;
  • 如果数据具有潜在的相关性,那么数据实际的维度可能并不高,可以用变换的方式,用低维的数据对高维数据进行近似的表示,这种方式称为数据压缩;
  • 另外一种处理数据相关性的方式是将数据表示为不同的形式来减小数据量,如聚类、回归等,这种方式称为数据块消减。

2数据离散化

为什么要数据离散化?

  • 计算机存储器无法存储无限精度的值,计算机处理器也不能对无限精度的数进行处理。
  • 某些数据挖掘方法需要离散值的属性,这也催生了对数据进行离散化的需要。

数据离散化是对数据的属性值进行的预处理,它是将属性值划分为有限个部分,之后使用这个部分的标签来代替原来的属性值。

数据离散化的方法主要有分箱、聚类、自顶向下拆分、自底向上合并等
使用分箱的数据离散化方法是通过先将属性值分箱,再将属性值替换为箱标签的离散化方法;

使用聚类的数据离散化方法是通过先将属性值聚类,再使用类标签作为新的属性值的离散化方法。

通过拆分和合并来进行数据离散化的方法:基于信息增益的离散化、基于卡方检验的离散化和基于自然分区的离散化。

有关数据挖掘(2.3)--数据预处理的更多相关文章

  1. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  2. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  3. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  4. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  5. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  6. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  7. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  8. ruby-on-rails - 创建 ruby​​ 数据库时惰性符号绑定(bind)失败 - 2

    我正在尝试在Rails上安装ruby​​,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf

  9. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  10. SPI接收数据异常问题总结 - 2

    SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手

随机推荐