Python 是一门适合做数据挖掘的语言吗?
程序员文章站
2022-04-30 10:34:29
...
最近看见两本书,《集体智慧编程》,《 社交网站的数据挖掘与分析》,两本书都是以Python语言来讲解的,都是讲的数据挖掘方面的东西,其中后者还是 2011年Jolt生产效率大奖获奖图书,难道Python很适合 做数据挖掘吗?
你能想象用一下午时间实现从0开始一个简单的搜索引擎吗?C++显然是不行的。。你的大部分时间都将花在实现基本数据结构和调试语言错误上。。而用python,你要做的就是真正理解搜索算法,之后的实现真的很简单。。
我觉得用python很适合算法研究,不仅仅是数据挖掘。快速开发能让你迅速验证你的想法,而不是把时间浪费在程序本身上(想象一下你写了一星期的c++,调了一大堆指针错误,最后发现想法本身就有错误。。)当你知道你已经有了一个正确的算法,要使他运行速度提高只需用c++等重写性能瓶颈并嵌入就行了。。
Links:
Python适合做数据挖掘的另一个原因是社区现在比较成熟,mloss上面发布的Python程序越来越多。最著名的就是scikit.learn了吧,几乎涵盖了机器学习中常用的算法,而且scikit.learn更新非常快。
scikit.learn只是举了一个例子,还有orange,pyml等很多非常棒的package,有了这些包的支持,做数据挖掘和机器学习的时候,就会很节省时间了。 根据我这几个月的实际使用情况来看,R的软件包确实很丰富,但是这个也有很大的坏处,包的水平参差不齐,会面临各种版本不兼容的情况;举个例子,也许你的统计包只能用3.0以下的R,而你需要的第三方绘图包确实需要最新版的R,很伤脑筋;加之众多软件包在很早就停止维护了,从这个角度来看,包的数量多并不是一个很强的优势。
python的各类统计和计量的包已经到了可以用的程度了,由于开发团队活跃,导致包文档的及时性和开发思路一致,一通百通,使用起来很顺手;但是python的问题在于包不成熟,就比如我在使用python的pandas包是就发现其参数有尚未实现的情况,详情见专有型数据处理。
综合来看,python是适合做数据的,一是,对于非计算机科班出身不会有技术问题,python本身是非常便于使用的;二是,数据挖掘需要的工具在目前来看python基本都已经具备,并且在稳步的发展;三是,python在面临性能问题时解决方案众多。 Python相对于R是有很多优点的,R基本不存在数据结构的概念,导致你没有办法优化算法
R相对Python的优点可能在于更多的包(比如数据可视化和神经网络,这两个用Python不太好做) 数据挖掘感觉还是R专业一些,能直接接触到最新的方法,某些领域可能R做得更专业一点。
当然,如果python也不是说不行——一般的情景两者都能实现。
另外,也有人用python调用R的,其实发挥到极致,无论什么语言都能实现。 depends。 、
如果你想用别人做好的成熟的*,那 python 是不二之选。因为 python *多而且全,比如 numpy,scipy,scikit learn,gensim 等等都是成熟的*。 至于什么叫成熟,主要是一下两点:
1. 快,numpy 中大量用 c 写的 data structure,和 function,用起来及其快,而且方便。而且和其他*协作及其好
2. 安全,因为 python 是广泛应用,而且开源,标准的语言,所以*是基本不会出 bug 的,放心用。
这样节省了及其多的开发时间,在程序的运行效率上也不会有极大的降低。
当然,如果你需要对其他人的*有很大的更改,甚至于从数据结构上 numpy 都没法满足你,或者你需要追求速度,比如像微软,要带那么强大的东西,还要保证速度。那你也就必须要用 c 了。。。python实在太慢。。。 如果我简单回答"不是",以为至少可以阻止一些想做数据挖掘的人去学python反而没有及时学好R语言。尽管我招聘工程师的JD 里也提到了python, 但并非直指数据挖掘,而是为了ETL部分及大数据处理。看到大家对这样一个问题异口同声直接给了肯定的回答,我意识到但不能立刻确定自己对此有局限性认识,感觉怪怪的。
另外,想了解SAS的去http://www.ifeique.com/ Python很不错,能满足绝大方面的需求,比如数据预处理,格式转换等等。对于这些计算资源要求不是很高的地方可以用纯Python来做。如果遇到纯Python处理起来比较吃力的,可以混合c来加快效率,基于c的Python库也有很多。用Python做科学研究的学者越来越多,工具数量也越来越多。 总之,Python很适合数据挖掘 :-) 适合,但是在面对海量的数据和分布式支持的时候,要么用C写写接口,要么就改源码吧,总觉得Python处理大数据的时候太慢。
回复内容:
python强调程序员的生产力,让你把精力集中在逻辑上而不是语言本身上。你能想象用一下午时间实现从0开始一个简单的搜索引擎吗?C++显然是不行的。。你的大部分时间都将花在实现基本数据结构和调试语言错误上。。而用python,你要做的就是真正理解搜索算法,之后的实现真的很简单。。
我觉得用python很适合算法研究,不仅仅是数据挖掘。快速开发能让你迅速验证你的想法,而不是把时间浪费在程序本身上(想象一下你写了一星期的c++,调了一大堆指针错误,最后发现想法本身就有错误。。)当你知道你已经有了一个正确的算法,要使他运行速度提高只需用c++等重写性能瓶颈并嵌入就行了。。
Links:
- Scipy Stack(http://www.scipy.org/getting-started.html) - general tasks
- Spark(http://spark.apache.org/docs/latest/index.html) - going large
- Tensorflow(http://www.tensorflow.org/) - going deep
- GitHub - jupyter/docker-stacks: Opinionated stacks of ready-to-run Jupyter applications in Docker.
Python适合做数据挖掘的另一个原因是社区现在比较成熟,mloss上面发布的Python程序越来越多。最著名的就是scikit.learn了吧,几乎涵盖了机器学习中常用的算法,而且scikit.learn更新非常快。
scikit.learn只是举了一个例子,还有orange,pyml等很多非常棒的package,有了这些包的支持,做数据挖掘和机器学习的时候,就会很节省时间了。 根据我这几个月的实际使用情况来看,R的软件包确实很丰富,但是这个也有很大的坏处,包的水平参差不齐,会面临各种版本不兼容的情况;举个例子,也许你的统计包只能用3.0以下的R,而你需要的第三方绘图包确实需要最新版的R,很伤脑筋;加之众多软件包在很早就停止维护了,从这个角度来看,包的数量多并不是一个很强的优势。
python的各类统计和计量的包已经到了可以用的程度了,由于开发团队活跃,导致包文档的及时性和开发思路一致,一通百通,使用起来很顺手;但是python的问题在于包不成熟,就比如我在使用python的pandas包是就发现其参数有尚未实现的情况,详情见专有型数据处理。
综合来看,python是适合做数据的,一是,对于非计算机科班出身不会有技术问题,python本身是非常便于使用的;二是,数据挖掘需要的工具在目前来看python基本都已经具备,并且在稳步的发展;三是,python在面临性能问题时解决方案众多。 Python相对于R是有很多优点的,R基本不存在数据结构的概念,导致你没有办法优化算法
R相对Python的优点可能在于更多的包(比如数据可视化和神经网络,这两个用Python不太好做) 数据挖掘感觉还是R专业一些,能直接接触到最新的方法,某些领域可能R做得更专业一点。
当然,如果python也不是说不行——一般的情景两者都能实现。
另外,也有人用python调用R的,其实发挥到极致,无论什么语言都能实现。 depends。 、
如果你想用别人做好的成熟的*,那 python 是不二之选。因为 python *多而且全,比如 numpy,scipy,scikit learn,gensim 等等都是成熟的*。 至于什么叫成熟,主要是一下两点:
1. 快,numpy 中大量用 c 写的 data structure,和 function,用起来及其快,而且方便。而且和其他*协作及其好
2. 安全,因为 python 是广泛应用,而且开源,标准的语言,所以*是基本不会出 bug 的,放心用。
这样节省了及其多的开发时间,在程序的运行效率上也不会有极大的降低。
当然,如果你需要对其他人的*有很大的更改,甚至于从数据结构上 numpy 都没法满足你,或者你需要追求速度,比如像微软,要带那么强大的东西,还要保证速度。那你也就必须要用 c 了。。。python实在太慢。。。 如果我简单回答"不是",以为至少可以阻止一些想做数据挖掘的人去学python反而没有及时学好R语言。尽管我招聘工程师的JD 里也提到了python, 但并非直指数据挖掘,而是为了ETL部分及大数据处理。看到大家对这样一个问题异口同声直接给了肯定的回答,我意识到但不能立刻确定自己对此有局限性认识,感觉怪怪的。
另外,想了解SAS的去http://www.ifeique.com/ Python很不错,能满足绝大方面的需求,比如数据预处理,格式转换等等。对于这些计算资源要求不是很高的地方可以用纯Python来做。如果遇到纯Python处理起来比较吃力的,可以混合c来加快效率,基于c的Python库也有很多。用Python做科学研究的学者越来越多,工具数量也越来越多。 总之,Python很适合数据挖掘 :-) 适合,但是在面对海量的数据和分布式支持的时候,要么用C写写接口,要么就改源码吧,总觉得Python处理大数据的时候太慢。