Python学习日志(第2篇) —— 关联规则挖掘(1)

    本小白的方向是机械,学习Python是为了做数据挖掘。对于我而言,学习编程语言最快的办法是实战,从实际的程序中学习各种函数、命令、结构等。因此,我考虑寻找一些实战教材来进行数据挖掘的学习。

一、教材准备

    (1)《Python数据分析与挖掘实战》2015年 张良均

    (2) 这部教材非常棒的地方在于,有附带的、编写好的程序代码,直接方便学习者进行学习。

    (3) 我看到CSDN网站上也有人分享该资源,其他一些学习论坛上也有。如有需要,也可以私信我。

二、实战开始

    该书分为基础篇和实战篇,因为以前学过C语言,有一点点变成基础。而更重要的是基础篇的专业术语,我根本看不懂,所以我直接跳过基础篇,开始实战篇。另外,前期研究过一段时间的关联规则挖掘,因此直接定位到本书的第8章——中医证型关联规则挖掘

1. 数据准备

    在附件编码Chapter8中,可以看到已经准备好的数据。有demo和test两个文件夹。这两个文件夹的内容是一样的,本文中基于test文件夹进行测试。下面的介绍中,将会使用到的是code文件夹中的apriori_rules.py文件、apriori.py文件,以及data文件夹中的apriori.txt文件。(事实上案例中还涉及到聚类分析,而在本文档中暂不做说明)

2. 软件准备

    书中提到,Python本身的数据分析功能不强,需要安装一些第三方扩展库来增强其能力。而在这个案例中,就用到了Pandas这个库。Pandas是Python下最强大的数据分析和探索工具,功能强大,支持类似于SQL的数据增、删、查、改,并且带有丰富的数据处理函数等。

    启动Anaconda Prompt,在(base)这一行里,输入conda search pandas语句,则会出现本机中安装的所有pandas版本。可以看到最新的版本是0.22.0。说明本机中已经安装了(一般来说,在安装Anaconda时,这些常用的库都已经安装了)。如果没有安装的话,可以采用语句“pip install pandas”进行(我没有尝试过)。

3. 程序的试运行

    拿到如此现成的程序,谁不想先直接运行一遍,看看结果呢?脑袋里不禁继续脑补,基于这个程序,我把输入的数据换成我这个论文的数据,那直接就可以得到完美的结果!论文岂不是也就结了!事实证明,想!太!多!

    (1) 打开Spyder。那么问题来了,这么现成的py程序,我要从哪里打开?从哪里运行?从哪里看结果?上一篇日志中提到的Anaconda Promopt,我怎么看着不大行的样子(也许它是可以的,只是我不知道)。误打误撞,我就打开了Spyder!事实证明,这是对的。

    百度了一下,Spyder是一个简单的集成开发环境(这句话其实我不懂,只是百度抄过来的),它最大的优点是模仿MATLAB的“工作空间”功能。我的天呢,MATLAB我熟!我大概明白了Spyder是怎么一回事了,估计这其中,既可以打开程序、也可以编程序、调试程序(想起当年C语言考级时候的那个环境)。

    (2) 在Spyder中打开*.py文件。根据书中介绍,apriori.py文件是纯粹的关联规则算法文件。apriori_rules.py这个文件,包含了读取数据、用关联规则挖掘算法进行数据挖掘、以及产生最终结果的过程。因此,直接在Spyder中打开apriori_rules.py文件。(“打开文件”的按钮就不说了,所有的软件都差不多)

    (3) 在Spyder中运行*.py程序。直接点击左上角的Run File(F5),即一个绿色三角按钮。在右下角的“IPython Console”模块中开始出现一些运行结果,如“转换原始数据至0-1矩阵”、“转换完毕,用时:0.35秒”……

    突然,一行红字映入眼帘:“UnIcodeDecodeError:'ascii' code can't decode byte 0xe7 in position 69: ordinal not in range (128)”!报错了!程序运行不下去了!


3. 程序Bug的调试

(1) UnicodeDecodeError错误的调试

    关于UnIcodeDecodeError错误的调试,网上的帖子非常多(这里不再一一赘述)。大部分是采用“import sys……”的这个方法。我试了很多次,在apriori_rule.py这个程序中添加这行代码、或者从Lib文件夹内添加sitecustomer.py等等方法,都不行,有时还会报出其他的错误来。因为这段程序代码运行不下去的话,我就没法基于它来运行我的论文代码,苦楚地思考了2天,在网上查询各种各样的解决方案。

(2) Apriori.py中的bug

    无奈之下,我想先研究一下apriori.py这个关联规则函数的具体代码吧,能不能运行程序再说。机缘巧合,我发现了一个很大的问题。apriori.py文件的源代码中,倒数第四行用到了一个函数sort。

    根据CSDN上的一个帖子“用 Python 做数据处理必看:12 个使效率倍增的 Pandas 技巧(下)”中介绍到一点“Pandas 的“sort”函数现在已经不推荐使用,我们用 “sort_values”函数代替”于是,我把其中的“result.T.sort”改为了“result.T.sort_values”。并保存了该程序。

(链接为:http://blog.csdn.net/guangzhanblog/article/details/50646441。感谢这位帖子的原创人和转发人!

(3) 重新运行主程序

    再重新运行主程序apriori_rules.py,竟然完整地运行出了结果!

该结果与书中呈现出来的结果是一致的。

三、小结与下一步计划

1. 小结:案例的程序终于可以正常运行,为下一步我运行自己的论文程序奠定了基础。

2. 下一步:仔细研读程序的每一行,边学、边用!


  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值