【数据挖掘】数据挖掘和数据分析基础
参考文献:《Python数据分析与挖掘实战》张良均等
数据挖掘建模过程
- 定义挖掘目标:理解任务,确定指标
- 数据采样:注意数据的完整性和有效性
- 数据探索:异常值分析、缺失值分析、相关性分析、周期性分析
- 数据预处理:数据筛选、数据变量转换、缺失值处理、坏数据处理、数据标准化、主成分分析、属性选择、数据规约
- 挖掘建模:所属问题分析(分类、聚类、关联规则、时序模式、智能推荐),选用算法
- 模型评价:应用模型对应的评价方法,根据业务对模型进行解释和应用
数据挖掘建模工具
- SAS Enterprise Miner
- IBM SPSS Modeler
- SQL Server
- Python
- WEKA
- KNIME
- RapidMiner/YALE
- TipDM
数据探索
一、数据质量分析
数据预处理的前提,检查数据中是否存在脏数据(缺失值、异常值、不一致的值、重复数据、含特殊符号的数据),箱线图可以检测异常值。
file_name = r'../data/catering_sale.xls'
catering_sale = file_name
data = pd.read_excel(catering_sale, index_col=u'日期') #加载数据
plt.figure()
plt.rcParams['font.sans-serif'] = ['SimHei'] #正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #正常显示±号
# 画箱线图
p = data.boxplot(return_type='dict')
x = p['fliers'][0].get_xdata() #fliers为异常值标签
y = p['fliers'][0].get_ydata()
y.sort() #对y从小到大排序
for i in range(len(x)):#处理临界情况, i=0时temp = y[i] - y[i - 1] if i != 0 else -78 / 3#添加注释, xy指定标注数据,xytext指定标注的位置(所以需要特殊处理)plt.annotate(y[i], xy=(x[i], y[i]), xytext=(x[i] + 0.05 - 0.8 / temp, y[i]))plt.show()
二、数据特征分析
- 分布分析:解释数据的分布特征和分布类型:频率分布直方图、茎叶图、饼图、条形图
- 定量数据分布分析:求极差、决定组距和组数(极差/组距)、决定分点(分布区间)、列出频率分布表、绘制频率分布直方图。
- 定性数据分布分析:百分比/频数
- 对比分析:折线图
- 统计量分析:均值、中位数、标准差、四分位间距、变异系数CV=sbxˉ×100CV=\frac{s}{b}\bar{x}×100%CV=bsxˉ×100 Pandas中提供的describe方法可以得到基本统计量
file_name = r'../data/catering_sale.xls'
catering_sale = file_name
data = pd.read_excel(catering_sale, index_col=u'日期')
data = data[(data[u'销量'] > 400) & data[u'销量'] < 5000]
statistics = data.describe()[u'销量']
statistics['range'] = statistics['max'] - statistics['min'] #极差
statistics['var'] = statistics['std'] / statistics['mean'] #方差
statistics['dis'] = statistics['75%'] - statistics['25%'] #四分距
print(statistics)
- 周期性分析:时序折线图
- 贡献度分析:帕累托法则8/2定律,80%的利润来自20%的投入,应该重点关注80%利润的部分,绘制帕累托图
file_name = '../data/catering_dish_profit.xls'
dish_profit = file_name #餐饮菜品盈利数据
plt.rcParams['font.sans-serif'] = ['SimHei'] # 正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 正常显示±号
data = pd.read_excel(dish_profit, index_col=u'菜品名')
data = data[u'盈利'].copy()
data.sort_values(ascending=False)
plt.figure()
data.plot(kind='bar')
plt.ylabel(u'盈利(元)')
p = 1.0 * data.cumsum() / data.sum()
p.plot(color='r', secondary_y=True, style='-o', linewidth=2)
plt.annotate(format(p[6], '.4%'),xy=(6, p[6]),xytext=(6 * 0.9, p[6] * 0.9),arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
plt.ylabel(u'盈利(比例)')
plt.show()
8. 相关性分析:散点图、散点矩阵图、计算相关系数(Pearson、Spearman)
Pearson线性相关系数要求连续变量的取值服从正态分布
Pearson=∑i=1n(xi−xˉ)(yi−yˉ)∑i=1n(xi−xˉ)2∑i=1n(yi−yˉ)2Pearson=\frac{\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum_{i=1}^{n}(x_i-\bar{x})^2\sum_{i=1}^{n}(y_i-\bar{y})^2}}Pearson=∑i=1n(xi−xˉ)2∑i=1n(yi−yˉ)2∑i=1n(xi−xˉ)(yi−yˉ)
不符合正态分布的变量,分类或等级变量之间的关联性采用Spearman秩相关系数,也称为等级相关系数,对两个变量成对的取值按照升序或降序编秩,RiR_iRi表示xix_ixi的秩次,QiQ_iQi表示yiy_iyi的秩次,Ri−QiR_i-Q_iRi−Qi表示秩次之差。(秩次:排序时的位置)
Spearman=1−6∑i=1n(Ri−Qi)2n(n2−1)Spearman=1-\frac{6\sum_{i=1}^{n}(R_i-Q_i)^2}{n(n^2-1)}Spearman=1−n(n2−1)6∑i=1n(Ri−Qi)2
判定系数是相关系数的平方,用r2∈[0,1]r^2∈[0,1]r2∈[0,1]表示,其值越接近于1则相关性越强,越接近于0则几乎无直线相关关系。
file_name = r'../data/catering_sale_all.xls'
catering_sale = file_name
data = pd.read_excel(catering_sale, index_col=u'日期')
print(data.corr())
print(data.corr()[u'百合酱蒸凤爪'])
print(data[u'百合酱蒸凤爪'].corr(data[u'翡翠蒸香茜饺']))
- 主要数据探索函数:
方法 | 函数功能 |
---|---|
sum() | 求和 |
mean() | 求均值 |
var() | 求方差 |
std() | 求均值 |
corr() | 计算相关系数矩阵 |
cov() | 计算协方差矩阵 |
skew() | 计算样本值的偏度(三阶矩) |
kurt() | 计算样本值的峰度(四阶矩) |
describe() | 样本基本描述 |
- 扩展统计函数
方法 | 函数功能 |
---|---|
cumsum() | 依次给出前1,2,…,n个数的和 |
cumprod() | 依次给出前1,2,…,n个数的积 |
cummax() | 依次给出前1,2,…,n个数的最大值 |
cummin() | 依次给出前1,2,…,n个数的最小值 |
rolling_sum() | 按列计算数据样本的总和 |
rolling_mean() | 数据样本的算数平均数 |
rolling_var() | 计算数据样本的方差 |
rolling_std() | 计算数据样本的标准差 |
rolling_corr() | 计算数据样本的相关系数矩阵 |
rolling_cov() | 计算数据样本的协方差矩阵 |
rolling_skew() | 样本值的偏度 |
rolling_kurt() | 样本值的峰度 |
cum系列是DataFrame对象和Series对象的方法
rolling_是pandas的函数,每k列计算一次,滚动计算
- Python统计作图
方法 | 函数功能 |
---|---|
plot() | 折线图 |
pie() | 饼状图 |
hist() | 折线图 |
boxplot() | 箱型图 |
plot(logy=True) | 绘制y轴的对数图形 |
plot(yerr=error) | 绘制误差条形图 |
【数据挖掘】数据挖掘和数据分析基础相关推荐
- 数据挖掘:探索性数据分析(EDA)
数据挖掘:探索性数据分析(EDA) 一.什么是探索性数据分析 EDA (Exploratory Data Analysis),即对数据进行探索性的分析.充分了解数据,为之后的数据清洗和特征工程等提供想 ...
- 数据挖掘:探索性数据分析(EDA)(补充)
数据挖掘:探索性数据分析(EDA)(补充) 在上一篇文章数据挖掘:探索性数据分析(EDA)中,已经讨论了一些探索性分析的方法,但去敏数据的处理方式和一些多元统计的方法没有做介绍.本篇文章主要讲这两方面 ...
- 数据挖掘和大数据分析
数据: 是对事物审慎.客观的记录.是以一种结构化的方式记录事件发生的相关数据. 大数据: 是无法被传统工具直接出处理.分析的数据,大多是半结构化以及非结构化数据,仅有少量是结构化数据. 结构化数据是有 ...
- 数据挖掘-数据挖掘综述-基础知识和概念总结
数据挖掘-数据挖掘综述-基础知识和概念总结 目录 数据挖掘-数据挖掘综述-基础知识和概念总结 1.数据 ...
- swiper 滚回第一个数据_名企必备的数据分析基础技能:Python大法(一)
现如今,大数据的发展越来越好,也越来越多的企业中大数据分析已经朝着更好的方向发展.也正是因为这个原因,数据分析行业的人才需求也变得火爆起来,尤其是数据分析.数据挖掘.数据科学家等高端人才,越来越稀缺. ...
- python计算相关矩阵_Numpy使用大全(python矩阵相关运算大全)-Python数据分析基础2...
//2019.07.10 python数据分析基础--numpy(数据结构基础) import numpy as np: 1.python数据分析主要的功能实现模块包含以下六个方面: (1)numpy ...
- python部分引入total值的问题_Python数据分析基础与过程综述,关键数据预处理异常点的发现与处理,python,及,流程,回顾,重点,之,值...
一. python数据分析基础库的导入 基本是固定搭配 import numpy as np #科学计算基础库,多维数组对象ndarray import pandas as pd #数据处理库,Dat ...
- 关联分析python牛奶面包_Python数据分析基础ReadingDay13_关联分析Apriori
reading Foundations for Analysis with Python Day 13 <Python数据分析基础>封面 之前我们已经完成了<Python数据分析基础 ...
- 【统计学习】25个必须掌握的数据分析基础概念
16个必须掌握的数据分析基础概念 1. 描述性统计 2. 假设性检验 2.1 参数检验 2.2 非参数检验 3. 置信度分析 4. 列联表分析 5. 相关分析 6. 方差分析 7. 回归分析 8. 聚 ...
- 简书python数据分析基础reading_Python数据分析基础ReadingDay1
从今天(2018-3-13)到3月26号本目录下会更新<Python数据分析基础>这本书的一些读书笔记和思考. 书目信息: 原书名: Foundations for Analysis wi ...
最新文章
- Github高级搜索技巧
- android launchmode singleinstance问题
- 系列(四)—Http协议
- spring配置详解-模块化配置
- Golang 检查元素在slice中是否存在 模仿Php实现arrary_In
- linux sudo 必须属于用户ID0,sudo:/usr/bin/sudo 务必属于用户 ID 0(的用户)并且设置 setuid 位...
- 太原理工大学c语言课程设计报告,[太原理工大学C语言实验报告.doc
- Oracle和Mysql中的字符串的拼接
- java linkedlist源码分析_LinkedList源码分析(基于Java8)
- 正负数据如何归一化_数据归一化方法大全
- 最长递增子序列O(nlogn)和O(n2)
- 实践练习6:查看 OceanBase 执行计划
- 脚本启动shipyard
- TWaver GIS制作穹顶之下的雾霾地图
- 支付宝账号转账/扫码即可到转账页
- ExecutorService,Executors 使用
- 第一次在linux服务器上跑python项目Sklearn安装问题
- 函数式编程(一):概念及特点
- 【沃顿商学院学习笔记】商业分析——People Analytics:15 人才分析 Talent Analytics
- 【Java常用类】String和StringBuffer类(下)
热门文章
- 你见过的MCU最高GPIO翻转频率是多少?
- 分享一篇很不错的CMake入门文章,值得收藏细读!
- 我是如何使用wireshark软件的
- MIPI屏数据发送命令解析
- HT68F30控制GPG96244QS1 TFT液晶屏
- TQ210——时钟系统
- 还没学python_2个月过去了!还没学会python?用《流畅的python》15天带你学会
- 图像特征提取与描述_角点特征04:LBP算法+HOG特征算子
- python工控怎么样_搞工控不了解python,好比雄鹰断了翅膀,理由在这里!
- 02.改善深层神经网络:超参数调试、正则化以及优化 W1.深度学习的实践层面