其实对于普通人来说,不用分析那么多模型,用各种机器学习库就可以了。再者,对于我们这些小白来说,经常写算法写的不6,一个模型写下来循环多得不得了,测一下时间和复杂度,用人家的库,10秒解决的问题,自己编写的模型,有可能俩小时还没跑出来(别问我怎么知道的……)。
那么问题来了,用什么库?
个人是用python,这里推荐几个常用的……估计大家都知道,不过不知道的可以试着去用一下。
首推numpy。原因除了点乘之类的很多东西用这玩意很方便以外,最主要的一个原因……是大量的机器学习库,你如果没安numpy……会没办法运行……(别问我怎么知道的……)
然后是pandas(熊猫),其实可以不用熊猫,比如我就经常用graphlab而不用熊猫。不过如果不是因为替代品的原因的话,类似的结构化数据的库你总得用一个。原因?
我给你举个例子……大量机器学习比赛,会给你一堆生数据,然后你得清洗数据对吧?比如三张表合为一张表,三张表长度不同,顺序是乱的,你要根据用户名来组合。现在你不用结构化数据的库,自己编循环来for和if组合。三张表,至少得三张表的长度相乘的复杂度。假设平均每张表100000行数据(长度10000),你3个for循环if一下,按照一个if语句算一个复杂度,就是10^15的复杂度,假设每个复杂度你要跑1纳秒……嗯……大概12天能跑完。我试了一下,10万行的3张表合到一起,我这渣电脑用熊猫的join函数大概2秒钟吧……当然你用别的什么结构化的库都行,你用SQL也行。
然后随便用个结构化的库处理完了以后,就到机器学习库了。主推sklearn。为啥?便宜啊……便宜到了免费的程度。像我们这些一张高级显卡都要纠结买不买的\L丝,用免费的库再正常不过啦……
不不不,这不是主要原因。其实最主要的原因是因为Sklearn好上手。sklearn的文档非常详细,而且几乎所有的方法都给了范例,稍微跑跑很容易理解,(这点熊猫就做得很不好……在熊猫里大量的方法没给范例……对新人很不友好。)而且因为sklearn是免费库,所以大量的数据分析比赛都允许使用……嗯……说不准哪个四线小城市的比赛人家都在用excel分析数据你就用sklearn去拿了个两百块的奖金呢。
graphlab。<delete>推荐graphlab主要是因为我在coursera上学的另一门课是用graphlab教的所以我这种菜鸡就习惯了用这个</delete>……其实主要是因为两个原因。1、这玩意的结构化数据库有范例,查起来方便(虽然要翻墙)。2是因为……不知道为什么,这玩意很多时候跑得比sklearn快。不过这玩意你得用要申请(或者买)用户ID,所以简单来说,你如果指着参加点数据分析的比赛拿奖金糊口,那这个只能用来验证模型。具体还得自己编(不过一般验证了模型以后编起来难度已经小多了……)
不过!这玩意有个非常好的好处,倒不是这个库怎么有好处,而是这个GraphLab Create的安装包……直接把常用库一并打包了。对于如我这种电脑三天两头崩溃的来说,重装库简直是灾难。直接安一个GraphLab Create,连着anaconda和jupyter都给安好了,多方便……
最后就是推荐jupyter notebook了。你习惯用其他IDE可以不用这个。推荐这玩意主要是因为……非常方便……谁用谁知道。举个例子,我现在几乎不开计算器和atom算东西了,无论是简单的还是复杂的问题,都用jupyter notebook写。这玩意比计算器用着方便,比文本编辑器用着顺手,比ide加载得快……好处多得我跟你说,给我一瓶啤酒我能吹一晚上……
就这些吧。顺便福利一下GraphLab Create我留在网盘里的备份,懒得一个一个安装库的可以下这个:链接: http:// pan.baidu.com/s/1pLhHWk b 密码:fp0l (啥?你问为啥不发github?当然是因为很多人没法翻墙啦!才不是因为我太菜了git用得不熟练呢。)