参考文献:《Python数据分析与挖掘实战》

数据清洗

数据清洗:删除数据集中无关数据,重复数据,平滑噪声数据,筛选掉与挖掘主题无关的数据,处理缺失值和异常值。

  1. 缺失值处理:删除记录、数据插补。
插补方法 方法描述
均值/中位数/众数插补 按照属性值的类型取值
使用固定值 用常量替换
最近临插补 用缺失样本最接近的样本的属性值
回归方法 建立拟合模型预测缺失的属性值
插值法 根据已有数据建立插值函数f(x)计算f(xi)

拉格朗日插值法:

inputfile = '../data/catering_sale.xls'
outputfile = '../data/sales.xls'
data = pd.read_excel(inputfile)
data[(data[u'销量'] < 400) | (data[u'销量'] > 5000)] = None
def ployinterp_column(index, df, k=5):y = df[list(range(index - k, index)) + list(range(index + 1, index + 1 + k))]y = y[y.notnull()]return lagrange(y.index, list(y))(index)
df = data[data[u'销量'].isnull()]
index_list = df[u'销量'].index
for index in index_list:data[[u'销量']][index] = ployinterp_column(index, data[u'销量'])
data.to_excel(outputfile)
  1. 异常值处理:删除异常记录,视为缺失值,用均值修正

数据集成

将多个数据源合并在一个一致的数据存储的过程(冗余属性识别、实体识别)

数据变换

对数据进行规范化处理,转化为适当的形式
(1) 简单函数变化:将不具有正态分布的数据变换成具有正态分布的数据。在时间序列分析中,简单的对数变换或者差分运算可以将非平稳序列转换为平稳序列。使用对数变换还可以对数据进行压缩。
(2) 规范化:也称归一化,消除指标之间的量纲和取值范围差异的影响进行标准化处理,将数据按比例缩放,使其在一个特定范围,便于综合分析。
最大-最小规范化:x∗=x−minmax−minx^*=\frac{x-min}{max-min}x∗=max−minx−min​
零-均值规范化:x∗=x−xˉσx^*=\frac{x-\bar{x}}{\sigma}x∗=σx−xˉ​
小数定标规范化:x∗=x10kx^*=\frac{x}{10^k}x∗=10kx​

datafile = '../data/normalization_data.xls'
data = pd.read_excel(datafile, header=None)
print((data - data.min()) / (data.max() - data.min())) #最大-最小
print((data - data.mean()) / data.std()) # 零-均值
print(data / 10**np.ceil(np.log10(data.abs().max()))) #小数定标

(3) 连续属性离散化
等宽法:将属性的值域划分为等宽的区间。
等频法:将相同数量的记录放在一个区间。
聚类法:将连续属性进行聚类,对聚类得到的簇进行处理,需要指定簇的个数,得到区间数。

datafile = '../data/discretization_data.xls'
data = pd.read_excel(datafile)
data = data[u'肝气郁结证型系数'].copy()
k = 4
# 等宽切分
d1 = pd.cut(data, k, labels=range(k))# 等频切分
w = [1.0 * i / k for i in range(k + 1)]
# percentiles表示特定百分位数,同四分位数
w = data.describe(percentiles=w)[4:4 + k + 1]
w[0] = w[0] * (1 - 1e-10)
d2 = pd.cut(data, w, labels=range(k))# 使用Kmeans聚类
kmodel = KMeans(n_clusters=k, n_jobs=4)
kmodel.fit(data.values.reshape(len(data), 1))
# 输出聚类中心,并且排序
c = DataFrame(kmodel.cluster_centers_).sort_values(0)
# 相邻两项求中点,作为边界点
w = DataFrame.rolling(c, 2).mean().iloc[1:]
# 加上首末边界点
w = [0] + list(w[0]) + [data.max()]
d3 = pd.cut(data, w, labels=range(k))
def cluster_plot(d, k):plt.figure(figsize=(8, 3))for j in range(0, k):plt.plot(data[d == j], [j for i in d[d == j]], 'o')plt.ylim(-0.5, k - 0.5)return plt
cluster_plot(d1, k).show()
cluster_plot(d2, k).show()
cluster_plot(d3, k).show()

(4) 属性构造:从已有属性集中构造出新属性,加入到现有的属性集合中。

inputfile = "../data/electricity_data.xls"
outputfile = "../tmp/electricity_data.xls"
data = pd.read_excel(inputfile)
data[u"线损率"] = (data[u"供入电量"] - data[u"供出电量"]) / data[u"供入电量"]
data.to_excel(outputfile, index=False)

(5) 小波变换:在时域和频域具有表征信号局部特征的能力,通过伸缩和平移

数据规约

意义:降低无效、错误数据对建模的影响,提高建模的准确性。少量且具有代表性的数据将大幅度缩减挖掘所需的时间。降低储存数据的成本。

方法 描述
合并属性 旧属性合并为新属性
逐步向前选择 从空属性集开始添加当前最优属性,直到无法选出最优属性或满足阈值约束
逐步向后选择 从全属性集开始删除最差属性,直到无法选出最差属性或满足阈值约束
决策树归纳 利用决策树归纳法学习初始数据,删除没有在决策树上的属性
主成分分析 用较少的变量解释原始数据中大部分的变量

数值规约

  1. 直方图
  2. 聚类
  3. 抽样
  4. 参数回归

【数据挖掘】数据预处理相关推荐

  1. 数据挖掘 —— 数据预处理

    数据挖掘 -- 数据预处理 1. 数据清洗 2. 特征预处理 2.1 特征选择 2.2 特征变换 3 特征降维 1. 数据清洗 数据清洗包括数据样本抽样和异常值(空值)处理 直接丢弃(包括重复数据) ...

  2. 数据挖掘-数据预处理的必要性及主要任务

    数据预处理的必要性及主要任务 1.数据预处理的必要性 数据库极易受噪声.缺失值和不一致数据的侵扰,因为数据库太大,并且多半来自多个异构数据源.低质量的数据导致低质量的数据挖掘. 2.数据预处理技术 ( ...

  3. Python数据挖掘 数据预处理案例(以航空公司数据为例)

    Python数据预处理 一.内容: 1.数据清洗 2.数据集成 3.数据可视化 二.实验数据 根据航空公司系统内的客户基本信息.乘机信息以及积分信息等详细数据,依据末次飞行日期( LAST_FLIGH ...

  4. 数据挖掘—数据预处理

    文章目录 数据预处理 1 数据清洗 缺失值处理 异常值处理 2 数据集成 实体识别 冗余属性识别 数据变换 简单函数变换 规范化 连续属性离散化 属性构造 3 数据规约 属性归约 数值归约 Pytho ...

  5. 机器学习与数据挖掘——数据预处理

    如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:瞳孔空间 一:关于数据预处理 在工程实践中,我们得到的数据会存在有缺失值.重复值等,在使用之前需要进行数据预处理.数据预处理没有标准的流程,通常针对 ...

  6. 文本数据挖掘----数据预处理

    一.数据预处理简介 1.为什么要进行数据预处理 一开始拿到的数据在数据的质量方面或多或少有一些问题,即在数据的准确性.完整性.一 致性.合时性(实时性).可信性.解释性等方面可能存在问题,所以需要数据 ...

  7. 数据挖掘数据预处理(验证性)

    一.背景 软件:python 实验内容: (选做)使用Pandas_datareader获取任意两支股票近三个月的交易数据.做出收盘价的变动图像. 使用Pandas_datareader获取世界银行数 ...

  8. 【数据挖掘】分类任务简介 ( 分类概念 | 分类和预测 | 分类过程 | 训练集 | 测试集 | 数据预处理 | 有监督学习 )

    文章目录 I . 分类概念 II . 分类 ( 离散值 ) 和 预测 ( 连续值 ) III . 分类过程 IV . 分类过程中使用的数据集 ( 训练集 | 测试集 | 新数据 ) V . 数据预处理 ...

  9. 【数据挖掘笔记三】数据预处理

    3.数据预处理 数据预处理技术: 数据清理用来清除数据中的噪声,纠正不一致: 数据集成将数据由多个数据源合并成一个一致的数据存储,如数据仓库: 数据归约通过如聚集.删除冗余特征或聚类来降低数据的规模: ...

  10. 插值法补齐缺失数据_数据挖掘非常重要的一步:数据预处理

    为什么数据处理很重要? 对数据挖掘熟悉的小伙伴,数据处理相关的工作时间占据了整个项目的70%以上.数据的质量,直接决定了模型的预测和泛化能力的好坏.它涉及很多因素,包括:准确性.完整性.一致性.时效性 ...

最新文章

  1. 关于VS项目平台的x86,x64,Any CPU以及Debug和Release
  2. 先睹为快:Visual Studio 11测试版已于2.29在微软官方网站正式发布
  3. excel行转列_excel统计函数:应用广泛的动态统计之王OFFSET(上)
  4. MySQL的FROM_UNIXTIME()和UNIX_TIMESTAMP()函数
  5. 第五十五期:MongoDB数据库误删后的恢复
  6. Django 框架02: 模型与站点
  7. SpringBoot 实现Session共享
  8. 层净高怎么算_层高和净高怎么算,标准是多少?
  9. 力扣669. 修剪二叉搜索树(JavaScript)
  10. c语言以空格分割字符串_如何统计字符串中单词的个数?
  11. Spark RDD概念学习系列之Pair RDD的分区控制
  12. java集成agent作用_javaagent 基于 javaagent 开发的 APM 工具,收集方法的执行次数和执行时间,定时输出成 json 格式 @codeKK Android开源站...
  13. 超级计算机想象作文700字,智能世界想象作文700字
  14. 纯真数据库mysql_纯真数据库下载或自动更新实现
  15. Linux打包解包、压缩解压缩
  16. [Spring实战系列](2)Maven创建Spring-HelloWorld项目
  17. Pandas读取excel数据——pearson相关性分析
  18. 针对浏览器主页被360或hao123锁定的解决方法
  19. 移动开发----byte(字节)根据长度转成KB(千字节)和MB(兆字节)
  20. 跨期套利交易系统策略

热门文章

  1. 书中自有黄金屋~外加中奖结果通知
  2. div不继承父类样式_Python编程思想(27):类的继承
  3. python正则表达式入门_Python中的正则表达式教程
  4. 数据结构之二叉树:二叉查找树的先序、中序、后序、层序遍历,Python代码实现——10(续)
  5. Express 路由模块化以及 Express 应用程序生成器
  6. Chapter1-4_Speech_Recognition(HMM)
  7. LeetCode 662. 二叉树最大宽度(递归)
  8. LeetCode 1389. 按既定顺序创建目标数组
  9. LeetCode 12/13 罗马数字与整型互转(哈希,贪心)
  10. LeetCode 572. 另一个树的子树(二叉树迭代器)