数据规约产生更小且保持完整性的新数据集,在规约后的数据集上进行分析和挖掘将提高效率

一、属性规约

属性规约通过属性合并创建新属性维数,或者通过直接删除不相关的属性来减少数据维数,从而提高数据挖掘的效率,降低计算成本。属性规约常见的方式如下表所示:

属性规约方法 方法描述
合并属性 将一些旧属性合并为新属性
逐步向前选择 从一个空属性集开始,每次从原来属性集合中选择一个当前最优的属性添加到当前属性子集中,直到无法选出最优属性或满足一定阈值约束为止
逐步向后删除 从全属性集开始,每次从当前属性子集中选择一个当前最差属性并将其从当前属性子集中消去,与上面相反
决策树归纳 利用决策树的归纳方法对初始数据进行分类归纳学习,获得一个初始决策树,所有没有出现在决策树上的属性均可认为是无关属性,因此可以将这些属性删除
主成分分析 用较少的变量去解释原数据中的大部分变量,将许多相关性很高的变量转化成彼此相互独立或不相关变量

以下几篇文章讲了主成分分析的原理和推导过程,可以借鉴:

如何通俗易懂地讲解什么是 PCA(主成分分析)? - 知乎

PCA:详细解释主成分分析_lanyuelvyun的博客-CSDN博客_主成分分析

PCA(主成分分析)-------原理,推导,步骤、实例、代码_xxty1122的博客-CSDN博客_主成分分析代码

这篇文章详细的讲了PCA的代码实现

Python机器学习笔记:主成分分析(PCA)算法 - 战争热诚 - 博客园

我们就用Python中自带的scikit-learn库中的主成分分析来实现降维:

class sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False)

参数说明:

n_components:

意义:PCA算法中所要保留的主成分个数n,也即保留下来的特征个数n

类型:int 或者 string,缺省时默认为None,所有成分被保留。

赋值为int,比如n_components=1,将把原始数据降到一个维度。

赋值为string,比如n_components='mle',将自动选取特征个数n,使得满足所要求的方差百分比。

copy:

类型:bool,True或者False,缺省时默认为True。

意义:表示是否在运行算法时,将原始训练数据复制一份。

若为True,则运行PCA算法后,原始训练数据的值不会有任何改变,因为是在原始数据的副本上进行运算;

若为False,则运行PCA算法后,原始训练数据的值会改,因为是在原始数据上进行降维计算。

whiten:

类型:bool,缺省时默认为False

意义:白化,使得每个特征具有相同的方差。

import pandas as pd# 参数初始化
inputfile = './Python数据分析与挖掘实战(第2版)/chapter3/demo/data/principal_component.xls'
outputfile = './Python数据分析与挖掘实战(第2版)/chapter3/demo/data/dimention_reducted.xls'  # 降维后的数据data = pd.read_excel(inputfile, header = None)  # 读入数据from sklearn.decomposition import PCApca = PCA()
pca.fit(data)
print(pca.components_)  # 返回模型的各个特征向量
print(pca.explained_variance_ratio_)  # 返回各个成分各自的方差百分比

得到结果如下:

可以发现,当选取前4个主成分时,累计贡献率已经达到了97.37%,说明选取前三个主成分进行分析时已经很不错了,因此可以重新建立PCA模型,设置n_components = 3,如下:

pca = PCA(3)
pca.fit(data)
low_d = pca.transform(data)  # 用它来降低维度
pca.inverse_transform(low_d)  # 必要时可以用inverse_transform()函数来复原数据
low_d

二、数值规约

1.直方图(之前文章已经详细讲过)

2.聚类(之前文章也讲过)

使用数据的簇替换实际数据

3.抽样

(1)无放回简单抽样

(2)有放回简单抽样

(3)聚类抽样

(4)分层抽样

4.参数回归

将所有数据规约成线性(或对数线性)函数,线上对应的点可以近似看做已知点

三、Python主要预处理函数

1.interpolate

scipy的一个子库,下面包含了大量的插值函数,如拉格朗日插值、样条插值等,使用之前用

from scipy.interpolate impoort * 引入相应的插值函数 (具体使用,之前的文章有讲过)

2.unique

去除数据中的重复元素,得到单值元素列表,是numpy中的一个函数,也是series对象的一个方法

import pandas as pd
import numpy as np
D = pd.Series([1,1,2,3,5])
D.unique()
np.unique(D)

3.isnull/notnull

判断每个元素是否为空值

4.random

import numpy as np
np.random.rand(k,m,n)  #生成一个k*m*n的随机矩阵,其元素均匀的分布在区间(0,1)上
np.random.randn(k,m,n)  #生成一个k*m*n的随机矩阵,其元素服从标准正态分布

5.PCA

【Python数据分析】数据预处理3——数据规约(含主成分分析详解、Python主要预处理函数)相关推荐

  1. python 协程可以嵌套协程吗_Python | 详解Python中的协程,为什么说它的底层是生成器?...

    今天是Python专题的第26篇文章,我们来聊聊Python当中的协程. 我们曾经在golang关于goroutine的文章当中简单介绍过协程的概念,我们再来简单review一下.协程又称为是微线程, ...

  2. Python数据分析库pandas高级接口dt的使用详解

    Series对象和DataFrame的列数据提供了cat.dt.str三种属性接口(accessors),分别对应分类数据.日期时间数据和字符串数据,通过这几个接口可以快速实现特定的功能,本文着重讨论 ...

  3. python怎么下载图片怎么保存到本地_详解Python下载图片并保存本地的两种方式

    一:使用Python中的urllib类中的urlretrieve()函数,直接从网上下载资源到本地,具体代码: import os,stat import urllib.request img_url ...

  4. python中文件打开的合法模式组合_详解python中各种文件打开模式

    在python中,总的来说有三种大的模式打开文件,分别是:a, w, r 当以a模式打开时,只能写文件,而且是在文件末尾添加内容. 当以a+模式打开时,可以写文件,也可读文件,可是在读文件的时候,会发 ...

  5. python整数类型没有取值范围限制_详解Python中6种数据类型

    Python中数据类型主要有六种:数字类型,字符串类型,元组类型,列表类型,文件类型和字典类型,我们今天先介绍前四种类型. 假如在Python程序中,出现了"010",那么这个&q ...

  6. python官网下载步骤除了windows-python安装教程详解|python下载安装教程步骤

    Python是现在最受欢迎的编程语言,使用Python开发软件应用效率极高,相比其它语言有不可比拟的优势,Python是一种跨平台的计算机程序设计语言. 免费开源.最初被设计用于编写自动化脚本(she ...

  7. python中的str方法和repr方法_详解Python中__str__和__repr__方法的区别

    对我当前工程进行全部测试需要花费不少时间.既然有 26 GB 空闲内存,为何不让其发挥余热呢? tmpfs 可以通过把文件系统保存在大内存中来加速测试的执行效率. 但优点也是缺点,tmpfs 只把结果 ...

  8. python全栈之巅_Python 迭代器、生成器详解 - Python全栈之巅

    迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退. 使用迭代器的优点 对于 ...

  9. python中 a or b 的值为_详解python中and和or的返回值

    在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值:而是,返回它们实际进行比较的值之一. 一.and:>>> 'a' and 'b' ' ...

最新文章

  1. jquery之行自加自减
  2. vue脚手架解决跨域问题-------配置反向代理
  3. 017_layout排版
  4. Java基础篇:泛型与类型擦除
  5. XP远程桌面连接2008提示:远程计算机需要网络级别身份验证,而您的计算机不支持该验证...
  6. 看完微信抢红包算法你就明白,为啥你不是手气最佳
  7. windows程序窗体创建流程模型A--利用基本数据类型
  8. 浏览器输入一个url会发生什么
  9. C#读写config配置文件
  10. 用eclipse开发flex程序--- 配置eclipse(flex builder 3.0)
  11. 单独的REST JSON API服务器和客户端? [关闭]
  12. postman自动化测试
  13. Spring JtaTransactionManager事务管理
  14. HashMap排序题
  15. Java字符流拷贝/复制文本文件,字节流拷贝文本文件乱码,很经典简便
  16. paddle 图标注_没那么简单,手把手教你用Origin制作XRD谱图!
  17. burst tx 功能 开启_华硕路由器无线网络,专业设置各功能科普
  18. 智能传感器芯片行业下游市场应用前景分析预测及市场需求结构分析
  19. 小说更新太慢怎么办_这几部小说因更新太慢,惹得书迷大怒,粉丝扬言要打断作者的腿!...
  20. Manifest介绍

热门文章

  1. a标签写链接地址跳转到下载企业微信app页面
  2. Python开发【第二篇】:初识Python
  3. C# DataTable Compute方法的使用
  4. PL/SQL Developer远程连接Oracle数据库
  5. 数据库修复工具 - DatabaseCompressor 之从9M到900K+
  6. Communication System--ZOJ 1409
  7. Windows Phone 7之初体验(四.平台架构简介)
  8. 安装sw时出现sldim停止工作_脉冲滤筒除尘器的安装有哪些小常识
  9. php精准函数,PHP常用函数大全
  10. 微信分身版电脑版_电脑版营销wetool电脑版-网站