数据挖掘


概述

最近一直在学习数据挖掘和机器学习,无论是是服务端开发人员还是web开发人员,个人觉得最起码都要都一些最基本的数据挖掘和机器学习知识。废话少说,我们先来学习一下数据挖掘的是什么意思?个人的理解是从业务数据中挖掘出隐含的、未知的、对决策有潜在价值的关系、模式和趋势。也就是说我们从数据中挖掘到符合我们所需的目标。

数据挖掘的分解

目标定义-》数据采样-》数据整理-》模型评价-》模型发布。 所谓目标定义即定义我们到底需要做什么,目标的定义往往来源于需求,这里不去具体的阐述。 为了确保数据完整、各项属性或者指标齐全以及数据准确无误,所以对数据要进行采样处理。采样的方式有:

  • 随机抽样:以相同的随机概率的方式对每组数据进行采样。
  • 等距抽样:如果按4%的比例对一个有100组观测数据进行数据等距采样的话,则100/4=25,等距采样的方式是取第25,50,75,100这四组观测值。
  • 分层采样:将观测数据分为若干层次然后以相同的概率进行采样。
  • 分类抽样:依据某种观测数据的属性的取值来选择数据子集,比如:区域分类。

数据的整理分为很多步骤,对于已经采样的数据来说要进一步的进行审核和加工处理。数据预处理完成之后,在进行数据挖掘建模。最终对模型进行评价和发布。

Python数据挖掘技术栈

Numpy、Scipy、Matplotlib、Pandas、StatsModels、Scikit-Learn、Keras和Gensim.其中StatsModels是统计建模和计量经济学,Gensim文本处理类库。

异常值分析

异常值是指样本数据中的个别值,其数值明显偏离其余的观测值,也称为离群点。分析方法:

  • 简单统计量分析:查看数据是否超出最大值和最小值等等。
  • 3σ原则(拉依达准则):它是先假设一组检测数据只含有随机误差,对其进行计算处理得到标准偏差,按一定概率确定一个区间,认为凡超过这个区间的误差,就不属于随机误差而是粗大误差,含有该误差的数据应予以剔除。且3σ适用于有较多组数据的时候。在正态分布中σ代表标准差,μ代表均值。x=μ即为图像的对称轴.在(μ-3σ,μ+3σ)区间内的概率很大,超出这个范围的可能性不会超过0.3%。所以P(|x-μ|>3σ)<=0.3%
  • 箱型图分析 QU+1.5IQR<异常值<QL-1.5IQR或大于的值。QL称为下四分位数,表示全部观察值中有四分之一的数据取值比它小;QU称为上四分位数,表示全部观察值中有四分之一的数据取值比它大;IQR称为四分位数间距,是上四分位数QU与下四分位数QL之差,其间包含了全部观察值的一半。

计算相关系数

在二元变量相关分析方法中,最常用的是Pearson相关系数、Spearman秩相关系数和判定系数方法。

Pearson相关系数

主要用在两个连续性变量之间的关系且连续性变量要服从正太分布,公式:

其中,x和y分别表示x变量的平均值和y变量的平均值。 相关系数r的取值范围是:-1<=r<=1,其中

  • r>0为正相关,r<0为负相关
  • |r|=1表示完全线性相关
  • |r|=0表示不存在线性关系 其中0<r<1表示存在不同程度的线性相关,
  • |r|<=0.3为不存在线性相关
  • 0.3<|r|<=0.5 低度线性相关
  • 0.5<|r|<=0.8 显著线性相关
  • |r|>0.8为高度线性相关

Spearman秩相关系数

不服从正太分布的变量、分类或等级变量之间的关联性可采用Spearman秩相关系数(等级相关系数法)。公式为:

r=1 -{ \frac{\sum_{i=1}^n 6(R_i-Q_i)^2}{n(n^2-1)}}

在进行计算r之前,要对两个变量成对的取值分别按顺序编秩(从小到大或者从大到小),Ri代表x的秩次,Qi代表y的秩次。如果遇到x数据相同情况下,那么秩次为相同数据的平均值。

判定系数

判定系数是相关系数的平方,用r的平方表示,用来衡量回归方程对y的解释程度。取值范围为0-1,越接近于1代表x与y之间的相关性越强,越接近于0表明几乎没有直线相关。

归一化处理

最小-最大规范化

它是对原始数据的线性变换,将数值映射到0-1.公式为:

x^*=\frac{x-min}{max-min}

0-均值规范化(标准差标准化)

经过处理的数据的均值为0,标准差为1.公式为:

x^*=\frac{x_i-x}{\sigma}

其中x为原始数据均值,σ为原始数据的标准差。

小数定标准规范化

x^*=\frac{x}{10^k}

我们利用pandas来进行计算如下:

import pandas as pd
data = pd.read(file)
#归一化
t1=(data-data.min())/(data.max()-data.min())
#零-均值标准化
t2=(data-data.mean())/data.std()
# 小数定标规范化
t3=data/10**np.ceil(np.log10(data.abs().max()))

连续属性的离散化

  • 等宽法
  • 等频法
  • 基于聚类的分析方法:采用k-means方法,即随机确定k个初始点作为质心,然后将数据集集中的每个点分配到簇中。每个点要找其距离最近的质点。
import pandas as pd
data = pd.read(input)
k=4
# 等宽法
d1 = pd.cut(data,k,labels=xrange(k))
# 等频法
w=[1.0*i/k for i in xrange(k+1)]
w = data.describe(percentiles=w)[4:4+k+1]
d2=pd.cut(data,w,range(k))
#k-means
from sklearn.cluster import KMeans
#建立模型
model = KMeans(n_clusters=k,n_jobs=4)
# 训练模型
model.fit(data.reshape(len(data),1))
#输出质心即聚类中心
c = pd.DataFrame(model.cluster_centers_)

数据规约

为了降低低效、错误数据对建模的影响,提高建模的准确性和降低存储成本,我们一般需要将数据进行规约处理。

属性规约

属性规约是通过属性合并来创建新属性维数,或者直接删除不相关的属性来减少属性的维数,从而提高数据挖掘的效率和降低计算成本。属性规约的目的是寻找出最小的属性子集并确保新数据子集的概率分布尽可能的接近原来数据集的概率分布。常用方法有:

  • 合并属性:将一些旧属性和合并成新属性
  • 逐步向前选择: 从一个空集合开始,每次从原来属性集合中选择一个当前最有的属性添加到当前属性集中。直到无法找到最优或者达到某个阈值为止。
  • 逐步向后删除:从一个全属性集开始,每次从当前属性子集张选择一个当前最差的属性子集删除。直到无法选择出最差或者达到某个条件阈值。
  • 决策树归纳:是一种树结构,如果没有出现在决策树中的属性认为是无关紧要的属性。
  • 主成分分析: 用较少的变量去解释原始数据中的大部分变量,即将许多相关性很高的线性变量转化成彼此相互独立或不相关的变量。 其中逐步向前选择、逐步向后删除和决策树归纳是直接删除不相关的属性,主成分分析是一种用于连续属性的数据降维方法。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

Python数据挖掘 | 实战案例之预测糖尿病

豌豆贴心提醒,本文阅读时间7分钟 今天给大家讲解一个实战案例:如何根据现有数据预测糖尿病。在这个案例开始之前,希望大家回忆一下大学里讲过的线性回归的知识,...

58090
来自专栏CDA数据分析师

教你如何使用深度学习识别交通标志,准确度高达93%

原作者 Priya Dwivedi 编译 CDA 编译团队 本文为 CDA 数据分析师原创作品,转载需授权 自动驾驶已经迎来发展的热潮。自动驾驶车在行驶时,需...

76850
来自专栏杨熹的专栏

凸优化有什么用

本文结构: 凸优化有什么用? 什么是凸优化? ---- 凸优化有什么用? 鉴于本文中公式比较多,先把凸优化的意义写出来吧,就会对它更有兴趣。 我们知道在机器学习...

43680
来自专栏机器之心

学界 | 谷歌联合英伟达重磅论文:实现语音到文本的跨语言转录

选自arxiv 机器之心编译 参与:吴攀、李亚洲、蒋思源 机器翻译一直是人工智能研究领域的重头戏,自去年谷歌推出了神经机器翻译(GNMT)服务以来,相关技术的研...

37390
来自专栏人工智能LeadAI

透析 | 卷积神经网络CNN究竟是怎样一步一步工作的?

视频地址:https://www.youtube.com/embed/FmpDIaiMIeA; 文档参阅:<a href="https://github.com...

42260
来自专栏杨熹的专栏

深度学习与自然语言处理 主要概念一览CS224d-Day 1:

---- CS224d-Day 1: 要开始系统地学习 NLP 课程 cs224d,今天先来一个课程概览。 课程一共有16节,先对每一节中提到的模型,算法,工...

381110
来自专栏YoungGy

信息论中的各种熵

本文简单介绍了信息论中的各种熵,包括自信息、熵;联合熵、条件熵、互信息;KL散度、交叉熵。并在最后用信息论中的交叉熵推导了逻辑回归,得到了和最大似然法相同的结果...

24750
来自专栏目标检测和深度学习

你不得不了解的8种神经网络结构!

机器学习已经在各个行业得到了大规模的广泛应用,并为提升业务流程的效率、提高生产率做出了极大的贡献。目前机器学习主要在以下方面应用: 模式识别:实际场景中的目标、...

42080
来自专栏ATYUN订阅号

RNN示例项目:详解使用RNN撰写专利摘要

我第一次尝试研究RNN时,我试图先学习LSTM和GRU之类的理论。在看了几天线性代数方程之后(头疼的要死),我在Python深度学习中发生了以下这段话:

18110
来自专栏机器学习算法与Python学习

你必须知道的神经网络基础,文末有福利!

人工神经网络表示一类机器学习的模型,最初是受到了哺乳动物中央神经系统研究的启发。网络由相互连接的分层组织的神经元组成,这些神经元在达到一定条件时就会互相交换信息...

6600

扫码关注云+社区

领取腾讯云代金券