肿瘤康复网,内容丰富有趣,生活中的好帮手!
肿瘤康复网 > 【数据挖掘】数据挖掘和数据分析基础

【数据挖掘】数据挖掘和数据分析基础

时间:2024-01-29 02:46:38

相关推荐

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

数据挖掘建模过程

定义挖掘目标:理解任务,确定指标数据采样:注意数据的完整性和有效性数据探索:异常值分析、缺失值分析、相关性分析、周期性分析数据预处理:数据筛选、数据变量转换、缺失值处理、坏数据处理、数据标准化、主成分分析、属性选择、数据规约挖掘建模:所属问题分析(分类、聚类、关联规则、时序模式、智能推荐),选用算法模型评价:应用模型对应的评价方法,根据业务对模型进行解释和应用

数据挖掘建模工具

SAS Enterprise MinerIBM SPSS ModelerSQL ServerPythonWEKAKNIMERapidMiner/YALETipDM

数据探索

一、数据质量分析

数据预处理的前提,检查数据中是否存在脏数据(缺失值、异常值、不一致的值、重复数据、含特殊符号的数据),箱线图可以检测异常值。

file_name = r'../data/catering_sale.xls'catering_sale = file_namedata = 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=bs​xˉ×100 Pandas中提供的describe方法可以得到基本统计量

file_name = r'../data/catering_sale.xls'catering_sale = file_namedata = 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_namedata = pd.read_excel(catering_sale, index_col=u'日期')print(data.corr())print(data.corr()[u'百合酱蒸凤爪'])print(data[u'百合酱蒸凤爪'].corr(data[u'翡翠蒸香茜饺']))

主要数据探索函数:扩展统计函数

cum系列是DataFrame对象和Series对象的方法

rolling_是pandas的函数,每k列计算一次,滚动计算

Python统计作图

如果觉得《【数据挖掘】数据挖掘和数据分析基础》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。