你和大数据只差了一个Python的距离

时间:2017-12-29 http://www.longtuedu.com.cn 作者:中清龙图教育

1.Python在数据挖掘中的应用


Python常被昵称为“胶水”语言,其特点是可以轻松的连接各种编程语言,粘在各个应用场景,不管是建站、爬虫、运维还是数据挖掘,都有它的身影。与其它语言相比,Python的语法简洁清晰,开发效率十分高效,通过完善的“包”往往一行代码可以实现其他语言N行代码的功能(但是某些场景执行效率不如C、Java等)。对于学习成本来讲,相对其它编程语言来讲,只要找对教程,一个对编程没有太多概念的初学者也可以轻松入门。


对于数据挖掘来讲,Python对数据清洗、数据探索、建立宽表、变量筛选、建模、模型参数优化、模型输出、模型投产等等一系列环节均有成熟的“包”进行支持。


而在建模环节,除了对传统时序、Logistic、决策树等算法的支持,Python也在不断涌现和迭代着各种最前沿且实用的算法包供用户免费使用,如:微软开源的回归/分类包LightGBM、FaceBook开源的时序包Prophet、Google开源的神经网络包TensorFlow,广泛应用于各大比赛的Xgboost等等等等。上述开源的包中,全部都支持Python。而对于其它语言来讲,上述包并不一定全部支持。由此也可以看到Python在数据挖掘领域中举足轻重的地位。


从实际使用的角度来讲,通过笔者对部分包的实际使用,对于分类、Logistics回归、传统回归等问题,上述包对效率和准确率均有十分大的提升。仅从效率角度比较,之前某项目宽表共40余万样本,480个字段,逐步回归用时2个小时,而另外一个项目通过使用xgboost的logistic Object,30余万样本,1700个字段,建模时间用时不到2分钟。(由于xgboost在各个数据挖掘竞赛中已经被广泛证实效果十分优秀,而且模型比较需要很长篇幅进行描述。所以本文仅从效率角度进行了比较,后续可以就模型比较单独写一篇公众号文,但就经验而言xgboost等算法效果通常不会比传统算法差)同时,与传统数据挖掘软件相比,Python还广泛应用于图像识别、语音识别、NLP等更丰富的数据挖掘领域。


可以看到,Python拥有应用场景广泛、开源免费、前沿算法支持、学习成本低、开发效率高等优质特点。通过这些特点,Python把遥不可及高高在上的大数据、数据挖掘、机器学习、深度学习等概念转化为每个人都可以学习、每个企业都可以实际应用的项目和程序。通过低成本的投入,可以满足更丰富的业务场景的需求、对现有业务场景的优化,帮助企业获得更高的利润并降低风险。


2.数据处理实例

对于大数据、数据挖掘的各种概念已经被炒的稀烂,类似上面写的软文一百度一大堆。作为一个干货满满的公众号,下面将从数据处理出发,从效率角度将Python及MySQL进行实际对比,展示Python对数据处理的强大能力。


背景

在数据挖掘第一步,通常会面临海量的贴源数据,也就是说一张表就有可能有上亿行数据。对于这种数据集的处理,在非集群的情况下,使用传统SQL数据库,需要通过建立索引、分表等技术才可能进行下一步处理,且效率很难保证。


如笔者曾经试图用单机MySQL(配置在下面测试中有截图,一个乞丐版的2014年mac pro)处理15g的单张表,共3亿+数据。但是发现导入进MySQL数据库都效率极低,而进行加索引或者简单的Groupby等操作更是基本无法完成。当然,通过分表处理理论上可以解决上述问题,但是代码量和效率也并不会十分迅捷。


对于上述问题,笔者最终采用Python的pandas包对数据进行分块读取,并使用pandas自带的Groupby、merge实现了与MySQL同样的功能,运行速度相比MySQL有了质的飞跃。


同时,Python在处理数据过程中,可以直接完成类似Excel的透视表功能,这个功能在建立宽表过程中十分有用,且是SQL并不支持的功能。


下面,将分别使用Python和MySQL对数据进行相同的处理,同时对MySQL是否加索引分别计算时间。由于本部分涉及代码,为了方便阅读,会先介绍软硬件配置及数据集,然后给出测试结果和结论,附录中会展示测试过程及代码。(由于时间和能力有限,也许笔者对Python和MySQL不能进行最优优化,结论不能十分严谨,但是结论也能适用于绝大多数企业的实际数据和硬件场景)





在线咨询

返回顶部