您建议使用哪种编程语言来原型化机器学习问题?


12

当前在Octave中工作,但是由于文档不佳,进度非常慢。

哪种语言易于学习和使用,并且有充分的文献记载来解决机器学习问题?我希望在一个小的数据集(成千上万的示例)上建立原型,因此速度并不重要。

编辑:我正在开发一个推荐引擎。因此,我对使用正则化线性回归,神经网络,SVN或协作过滤感兴趣。


1
我也曾经从Octave开始,因为我的教授进入了matlab(这在使用prof的库进行的课程学习中很有趣,因为matlab和octave 的语法并不完全相同),但是后来我切换到R并被吹走了凭借其卓越的文档和各种库。
steffen 2011年

9
当然,Python很容易学习和阅读,所以我想这是一个品味问题。我建议使用以下链接:python-stat-workbench用于统计推断的编程语言使用python的机器学习clojure
steffen 2011年

1
我建议使用R,Python或Matlab。由于无法解决的原因,我放弃了Matlab。对于统计人员,我会选择R,对于程序员,我会选择Python。对于内部循环,我将使用C / C ++。如果规模足够大,Matlab的成本将超过任何收益。
Iterator 2012年

1
或者看看
茱莉亚

Answers:


7

如果您想开箱即用,Weka可能是一个很好的起点。无需编写任何程序。您可以导入数据,对其进行可视化并使用不同的模型。

下一步将是R。有一些学习曲线-特别是将数据调整为适合R数据结构的方式,但是一旦克服了这一点,您将拥有大量的库,这些库可以毫不费力地提供所有机器学习功能。

接下来是手工编程机器学习算法。由于您已经在使用Octave并正在寻找替代方案,因此您可能想要的不是在其他系统中编写算法,而只是使用其他人编写的库。

如果您走R路线,您可能会发现Luis Torgo的书(R的数据挖掘:案例研究)非常有用(披露:无隶属关系)。它详细介绍了可以适应您的问题的案例研究。


15

如果您指定感兴趣的特定算法,您可能会得到更好的答案。您可以在此处查看现有功能:

http://cran.r-project.org/web/views/MachineLearning.html

在Hastie,Tibshirani和Friedman的统计学习元素中有R代码可以实现分析:

http://www-stat.stanford.edu/~tibs/ElemStatLearn/

R的打包系统非常棒,可以促使人们编写他们的代码,它是开源的,因此您可以随时查看实现。几年来我没有使用过Matlab,也没有在很多机器学习中使用过Matlab-他们的工具箱通常都有很好的文档记录,但价格昂贵,但是用户提供的代码将像其他任何文件一样缺乏文献记录。


11

在他的机器学习在线课程中,Andrew Ng建议使用Octave / Matlab。

我建议您参加本课程的下一版:它确实很有用,您将学到许多有关Octave和不同机器学习算法的知识。

编辑1:我同意其他喜欢在R中工作的人。但是,在解决机器学习问题时,您的大多数计算将采用矩阵形式,正如@Wayne所指出的那样,Matlab或Octave语言非常受欢迎因为他们的力量。您可能想看看其他学生提出的机器学习课程练习的解决方案;当然,您可以从中学到一些东西:

吉凯博·吉图布

Merwan Github


1
我已参加本期课程!问题在于,在课程之外做最简单的事情是行不通的!文档是没有用的。
B

3
我不得不说Matlab(因此是Octave)是一种糟糕的编程语言。它在工程和机器学习领域非常受欢迎,但这是由于它的强大功能以及在学校中的使用,而不是因为它是现代编程语言。就是说,与使用R或Python相比,您更有可能遇到使用它的机器学习文本。
韦恩

1
我用MATLAB进行所有工作,它不是世界上最好的编程语言(我会说R甚至更糟; o),但是值得坚持不懈,因为它对机器学习研究非常有用。对于神经网络,请查找NETLAB库,并使用GPML库研究高斯过程,两者都是出色的工具包,而IIRC都可以使用倍频程。对于正则化线性回归,它仅是MATLAB的一行,对于非线性模型,则具有GKM工具箱theoval.cmp.uea.ac.uk/projects/gkm(对不起,还没有任何帮助)。
Dikran有袋动物2011年

1
矩阵计算也可以在R中完成,尽管表示法(例如t(A) %*% B)不如Matlab直观。
Itamar

1
对于每种高级语言(例如C#,Java,Python和Perl),都没有好的矩阵库吗?
B

10

scikit学习(现在sklearn)应该满足几个你描述的(速度,精心设计的类来处理数据,模型和结果)的标准,包括有针对性的应用程序(L1 / L2处罚回归,SVM等)。它带有丰富的文档集和许多示例。另请参见JMLR中发表的论文中的描述。

Python中的另一个框架是Orange,可以通过简洁的GUI或直接在命令行上使用。对于协作过滤,pyrsvd可能很有趣,但我从未尝试过。但是,Apache Mahout当然可以用于协作过滤


1

如果您指的是工业原型(例如,某些东西是要被真实的人使用,而不是用于纯粹的研究),那么python是目前唯一的选择。

如果使用Matlab,Octave或R,您将获得一个易于使用的ML研究环境,但是将模型与用户界面或Web服务一起使用将是一场噩梦。

在蟒蛇,我们是幸运的,同时具有广泛的科学的生态系统(sklearn为ML,熊猫数据wragling,matplotlib / seaborn可视化)和应用生态系统(想想Django和静止框架)。

Python是一种易于学习的语言。我希望将来Javascript生态系统能够像python一样在科学上健全,但是尽管有一些伟大的项目,但我认为这种情况不会很快出现。

不要把自己包裹在盒子里,要用通用的语言!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.