机器学习/数据挖掘/大数据:流行编程语言及社区支持
在机器学习和数据挖掘领域,我们需要了解数据,这就意味着你得学习Hadoop。Hadoop是用Java实现的,主要用于处理数据的MapReduce功能(如果我说错了请纠正我)。不过,Hadoop也提供了一个流式API,可以支持其他语言,比如Python。我认识的大多数研究生和研究人员都是用Python来解决机器学习的问题。我们经常看到招聘信息上提到Hadoop和Java的组合。
我观察到,Java和Python在这个领域是最常用的编程语言。
我想问的是,在这个领域里,最受欢迎的编程语言是什么?在选择使用哪种语言或框架时,应该考虑哪些因素呢?
我会Java和Python,但总是感到困惑:
- 我该先用Java编程(因为Hadoop是用Java实现的)
- 还是先用Python编程(因为Python写起来更简单、更快)
这是个很开放的问题,我相信这些建议会对我和有同样疑问的人有所帮助。
5 个回答
R 是一个非常适合数据挖掘和机器学习的工具。
(当然,这只是一般性的说法。)
Java 和 Hadoop 在处理非常大的数据和扩展需求时非常有用。Java 提供了丰富的库和大量的程序员支持,而 Hadoop 则让数据分布处理变得相对简单,并且有越来越多的知识可以帮助你将各种算法应用到这个框架上。
Python 似乎在学术界有很强的支持,特别是一些最近毕业的学生,他们现在在专业领域中非常活跃和有影响力。而且,如果你只是想尝试一些东西,像 Python 这样灵活且表达能力强的动态语言显然会非常有用。
然后就是 R 了。(还有很多其他的工具,但这是我所知道的范围/g/)
我认为,除了 R 明显专注于数据这一点(因此也有很多数据爱好者可以帮助解决科学问题),它还是一个非常轻量级的系统,并且在库的丰富程度上也表现得相当不错。
话虽如此,人们可能会认为一些函数式编程语言(比如在 JVM 上的 Scala 和 Clojure,Haskell 等)也非常适合处理数据和大数据集。
我对Java和Hadoop不太熟悉,但我用过Python和MATLAB来做机器学习,现在更常用MATLAB。其实,对我来说,重要的因素有以下几点:
- 几乎我所有的同事都在用MATLAB和C++,很少有人用Python。他们用Python的情况主要是写一些普通的脚本,而不是专门做机器学习。所以,当我用Python的时候,唯一能得到帮助的就是网上资料,而且我们在实验室里共享代码时也会遇到问题。
- MATLAB的开发环境和丰富的文档让它在我的情况下非常强大。
- 你可以在MATLAB中处理大数据集。链接1 链接2
- 有很多用MATLAB写的机器学习和数据挖掘库,而且大多数用C++或Java写的库都有MATLAB的接口。
有些观点在Python中也适用。但正如我提到的,我所在的社区在选择编程语言时起着重要作用。
很遗憾,我觉得现在流行的编程语言是MATLAB……我之所以说遗憾,是因为我既不喜欢也不使用这门语言,我更倾向于用C++或Java来编程。不过我身边的数据挖掘和机器学习的人都比较喜欢用MATLAB……
补充一下:我刚在维基百科关于R语言的页面上看到一句非常有意思的话:
根据2010年Rexer的年度数据挖掘者调查,R语言已经成为使用人数最多的数据挖掘工具(43%),超过了其他任何工具。