Python数据挖掘工程师给新人的入门资料

对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧!

四年前我一次听说数据挖掘这个词,三年前我学习了数据挖掘理论知识,两年前我做了几个与数据挖掘有关的项目,一年前我成为一名数据挖掘工程师,今天我把数据挖掘入门资料整理了一下,希望能够对新人有帮助。

一、python

推荐粗读《Head First Python》一书,该书浅显易懂,有C语言基础的人只需一天就能读完,并能够使用python进行简单编程。“Head First”系列的数都很适合初学者,我还读过《Head First 设计模式》和《Head First Statistics》,感觉都不错。不过后两本,我读得比较细也比较慢,毕竟当时是首次接触设计模式和统计学相关知识,书中很多东西对我而言都是全新的。而当我读《Head First Python》时,我已经掌握了C、C++、java等多种编程语言,所以再看python就觉得比较简单了。学任何一种编程语言,一定要动手练习。python的集成开发环境有很多,我个人比较青睐PyCharm。

 

用python做数据挖掘的人一般都会用到pandas数据分析包。推荐阅读《pandas: powerful Python data analysis toolkit》文档,其中《10 Minutes to pandas》这一节能让你轻松上手pandas。读了这一节你会知道怎么用一句话得到数据的一些基本统计量(每一列特征的均值、标准差、最大最小值、四分位点等),怎么简单地实现多条件的过滤,怎么将两张表按key连接,怎么将数据可视化。除了这篇文档,我还想推荐一本书《利用Python进行数据分析》,这本书和之前文档的主要内容差不多。可以书和文档交叉看,加深印象。与文档相比,书增加了数据应用等内容。与书相比,文档增加了与R、SQL对比等内容。即使是主题相同的章节,例如绘图,文档和书将知识组织起来的方式以及侧重点也有所不同。个人认为,文档和书都值得一看。

二、统计学

虽然我也粗读过统计学的几本书,但从易懂性来说,都没有学校老师给的ppt好,或者说自己看书比较困难,但是听老师讲课就很容易懂。所以,我建议有条件的同学能够选修统计学这门课,没条件的同学可以去网上找一些相关视频,配套书籍可以选择茆诗松的《概率论与数理统计》。另外,《Head First Statistics》一书可以用来预热。

 

学了统计学,你至少应该知道基本的抽样方法、偏差与方差的区别、怎样进行数据预处理、怎样整理和显示数据、数据分布的描述统计量有哪些、假设检验是用来做什么的、置信区间的概念、R-squared的含义等等。你需要了解各种图的作用和适用场景,常用图包括条形图、饼图、直方图、折线图、箱线图、散点图、雷达图等。你需要了解各种统计量的含义,常见统计量包括均值、方差、中位数、四分位数、加权平均数、偏态、峰态等。你需要了解一些重要的分布,比如正态分布、chi-square分布、t分布、F分布等。

三、机器学习和数据挖掘

机器学习资料首推吴恩达的《斯坦福大学公开课:机器学习课程》视频。这20集视频确实是好视频,但对初学者来说难度偏大。我有了一点机器学习方面的基础后,再去看该视频,还花了2.5倍的时间才基本看懂。每当我跟不上视频时,就会暂停或者回退,再仔细看看课件,所以看完视频花掉的时间是视频原时长的2.5倍。另外,周志华的《机器学习》和李航的《统计学习方法》可以作为机器学习入门书籍,经典教材《Pattern Recognition and Machine Learning》可以作为机器学习进阶书籍,而《机器学习实战》一书能手把手地教你怎么实现机器学习模型的底层算法(书中包含了大量的程序清单)。

 

数据挖掘方面,推荐Jiawei Han的《数据挖掘概念与技术》。该书比较容易读懂,内容广泛且实用性强,特别适合初学者。

四、其他资料和建议

除了系统化的学习专业知识,我们也可以每天吸收一些碎片化的知识。例如,Quora上有不少关于机器学习和数据挖掘的问答,其答案质量普遍高于知乎,有兴趣的同学可以常去Quora的机器学习相关版块逛逛。订阅好东西传送门的《机器学习日报》是一个不错的选择。每天从日报中挑选1~2篇文章读读,可以扩展自己的知识面,同时养成天天学习的好习惯。

 

从Quora和《机器学习日报》中获取的一些知识点:

 

随机森林模型不适合用稀疏特征。

测试集必须使用与训练集相同的方法进行预处理。

L1正则(特征选择)最小样本数目m与特征n呈log关系,m = O(log n) ;

L2正则(旋转不变)最小样本数目m与特征n呈线性关系,m = O(n) 。

 

标准的PCA是一种线性转换技术。

呈长尾分布的特征通常需要进行对数转换。

线性SVM适合小样本。

AUC适合作为类不平衡问题的衡量标准。

在nested k-foldcross validation中,“外层循环”的目的是模型评估,“内层循环”的目的是模型选择。

在样本数量较少的情况下,极大似然估计的效果比普通的最小二乘法差。

想干数据挖掘这一行,光有理论知识是不够的,我们还需要积累实战经验。对于学生来讲,可以跟着老师做项目,可以参加各种大数据竞赛,也可以去公司实习。如果是参加竞赛的话,一般比赛结束后,前几名的算法会公开。我们要特别关注一下他们的算法创新点,说不定在下一个项目中就能用上。

 

阿里巴巴第一届大数据竞赛前9名团队的算法创新点整理:

 

第九:

 

缺失值填充。

考虑了行为转移特征(例如曾经购买过该品牌,近期再次发生点击但尚未购买;近期从购物车转移到收藏夹)。

第八:

 

在LR模型中,用dummy coding的方法处理了所有的特征。

第七:

 

模型融合做得不错。分别用滑动窗口和固定窗口建模。再用LR进行一级模型融合,最后对第一级的预测结果进行平均融合。

第六:

 

对不同的用户-品牌类型进行了分类,并采取了不同的处理方法。

第五:

 

对正例采取上采样方式,负例采取下采样方式。

先用一个欠拟合的random forest初始化gbrt的残差,再用一个树的棵树不是很大的gbrt来训练,从而能够在相对短的时间内得到比用较大棵树的gbrt还要高一些的性能。

第四:

 

对特征进行Laplace平滑。

第三:

 

对数据进行归一化、分箱和去噪。

第二:

 

去除离群点。

第一:

 

用LR滤去超过80%的样本。

采用了神经网络算法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Python中的函数(二) 在上一篇文章中提到了Python中函数的定义和使用,在这篇文章里我们来讨论下关于函数的一些更深的话题。在学习C语言函数的时候,遇到的问题主要有形参实参的区别、参数的传递和改变、变量的作用域。同样在Python中,关于对函数的理解和使用也存在这些问题。下面来逐一讲解。一.函
Python中的字符串 可能大多数人在学习C语言的时候,最先接触的数据类型就是字符串,因为大多教程都是以"Hello world"这个程序作为入门程序,这个程序中要打印的"Hello world"就是字符串。如果你做过自然语言处理方面的研究,并且用Python
Python 面向对象编程(一) 虽然Python是解释性语言,但是它是面向对象的,能够进行对象编程。下面就来了解一下如何在Python中进行对象编程。一.如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法。 类是对现实世界中一些事物的封装,
Python面向对象编程(二) 在前面一篇文章中谈到了类的基本定义和使用方法,这只体现了面向对象编程的三大特点之一:封装。下面就来了解一下另外两大特征:继承和多态。 在Python中,如果需要的话,可以让一个类去继承一个类,被继承的类称为父类或者超类、也可以称作基类,继承的类称为子类。并且Pytho
Python中的函数(一) 接触过C语言的朋友对函数这个词肯定非常熟悉,无论在哪门编程语言当中,函数(当然在某些语言里称作方法,意义是相同的)都扮演着至关重要的角色。今天就来了解一下Python中的函数用法。一.函数的定义 在某些编程语言当中,函数声明和函数定义是区分开的(在这些编程语言当中函数声明
在windows下如何快速搭建web.py开发框架 用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方便和顺手,就是web.py。它由一名黑客所创建,但是不幸的是这位创建者于2013年自杀了。据说现在由
将Sublime Text 2搭建成一个好用的IDE 说起编辑器,可能大部分人要推荐的是Vim和Emacs,本人用过Vim,功能确实强大,但是不是很习惯,之前一直有朋友推荐SUblime Text 2这款编辑器,然后这段时间就试了一下,就深深地喜欢上这款编辑器了...
Python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt这个函数,必须用语句"#include<math.h>"引入math.h这个头文件,否则是无法正常进行调用的。那么在Python中,如果要引用一些内置的函数,该怎么处理呢?在Python中
Python的基础语法 在对Python有了基础的认识之后,下面来了解一下Python的基础语法,看看它和C语言、java之间的基础语法差异。一.变量、表达式和语句 Python中的语句也称作命令,比如print "hello python"这就是一条语句。 表达式,顾名思义,是
Eclipse+PyDevʽjango+Mysql搭建Python web开发环境 Python的web框架有很多,目前主流的有Django、Tornado、Web.py等,最流行的要属Django了,也是被大家最看好的框架之一。下面就来讲讲如何搭建Django的开发环境。一.准备工作 需要下载的
在windows下安装配置Ulipad 今天推荐一款轻便的文本编辑器Ulipad,用来写一些小的Python脚本非常方便。 Ulipad下载地址: https://github.com/limodou/ulipad http://files.cnblogs.com/dolphin0520/u...
Python中的函数(三) 在前面两篇文章中已经探讨了函数的一些相关用法,下面一起来了解一下函数参数类型的问题。在C语言中,调用函数时必须依照函数定义时的参数个数以及类型来传递参数,否则将会发生错误,这个是严格进行规定的。然而在Python中函数参数定义和传递的方式相比而言就灵活多了。一.函数参数的
在Notepad++中搭配Python开发环境 Python在最近几年一度成为最流行的语言之一,不仅仅是因为它简洁明了,更在于它的功能之强大。它不仅能够完成一般脚本语言所能做的事情,还能很方便快捷地进行大规模的项目开发。在学习Python之前我们来看一下Python的历史由来,"Pytho
Python中的条件选择和循环语句 同C语言、Java一样,Python中也存在条件选择和循环语句,其风格和C语言、java的很类似,但是在写法和用法上还是有一些区别。今天就让我们一起来了解一下。一.条件选择语句 Python中条件选择语句的关键字为:if 、elif 、else这三个。其基本形式如
关于raw_input( )和sys.stdin.readline( )的区别 之前一直认为用raw_input( )和sys.stdin.readline( )来获取输入的效果完全相同,但是最近在写程序时有类似这样一段代码:import sysline = sys.stdin.readline()
初识Python 跟学习所有的编程语言一样,首先得了解这门语言的编程风格和最基础的语法。下面就让我们一起来了解一下Python的编程风格。1.逻辑行与物理行 在Python中有逻辑行和物理行这个概念,物理行是指在编辑器中实际看到的一行,逻辑行是指一条Python语句。在Python中提倡一个物理行只
当我们的代码是有访问网络相关的操作时,比如http请求或者访问远程数据库,经常可能会发生一些错误,有些错误可能重新去发送请求就会成功,本文分析常见可能需要重试的场景,并最后给出python代码实现。
1.经典迭代器 2.将Sentence中的__iter__改成生成器函数 改成生成器后用法不变,但更加简洁。 3.惰性实现 当列表比较大,占内存较大时,我们可以采用惰性实现,每次只读取一个元素到内存。 或者使用更简洁的生成器表达式 4.yield from itertools模块含有大量生成器函数可
本文介绍简单介绍socket的常用函数,并以python-kafka中的源码socketpair为例,来讲解python socket的运用
python实践中经常出现编码相关的异常,大多网上找资料而没有理解原理,导致一次次重复错误。本文对常用Unicode、UTF-8、GB2312编码的原理进行介绍,接着介绍了python字符类型unicode和str以及常见编解码错误UnicodeEncodeError和UnicodeDEcodeEr