我刚刚开始出于学术目的开发机器学习应用程序。我目前正在使用R并对其进行训练。但是,在很多地方,我都看到人们在使用Python。
人们在学术界和工业界使用什么,建议是什么?
我刚刚开始出于学术目的开发机器学习应用程序。我目前正在使用R并对其进行训练。但是,在很多地方,我都看到人们在使用Python。
人们在学术界和工业界使用什么,建议是什么?
Answers:
当您相互选择R或Python时,要考虑一些真正重要的区别:
因此,两种语言都一样好。因此,根据您的领域和工作地点,您必须明智地选择正确的语言。技术界通常更喜欢使用一种语言。商业用户(市场分析,零售分析)通常会使用R等统计编程语言,因为他们经常进行快速原型制作和可视化(在R中比Python更快)。
没有比“ python更好”或“ R比x更好”之类的东西了。
我知道的唯一事实是,在行业中,很多人坚持使用python,因为这是他们在大学中学到的。python社区真的很活跃,并且有一些很棒的ML和数据挖掘框架等。
但老实说,如果您有一个优秀的c程序员,他就可以像人们在python或r中所做的一样,如果您有一个优秀的java程序员,他也可以(几乎)在java中做任何事情。
因此,请坚持使用您喜欢的语言。
一些其他想法。
编程语言“本身”仅是一种工具。所有语言都旨在使某些类型的结构比其他结构更易于构建。与其他语言相比,编程语言的知识和精通度比该语言的功能更为重要和有效。
据我所知,这个问题有两个方面。第一个维度是能够快速探索,建立概念或模型的证明,最终拥有足够的工具来研究正在发生的事情(例如统计测试,图形,测量工具等)。研究人员和数据科学家通常都喜欢这种活动(我总是想知道这是什么意思,但是我用这个词来表示它的宽松定义)。他们倾向于依靠众所周知的经过验证的工具,这些工具可以用于证明或论证。
第二个维度是扩展,更改,改进甚至创建工具,算法或模型的能力。为了实现这一点,您需要适当的编程语言。几乎所有人都是一样的。如果您在一家公司工作,那么您将非常依赖于公司的基础架构,内部文化以及您的选择会大大减少。另外,当您想要实现用于生产的算法时,您必须信任该实现。用另一种您不会掌握的语言来实现将不会有多大帮助。
对于第一种活动,我倾向于R生态系统。您拥有一个强大的社区,大量工具,并证明这些工具能够按预期运行。另外,您可以考虑使用Python,Octave(仅举几例),它们是可靠的候选者。
对于第二项任务,您必须先考虑自己真正想要的。如果您需要强大的生产就绪工具,那么C / C ++,Java和C#是不错的选择。我认为Python与Scala和朋友一起是该类别的第二公民。我不想发动火焰战争,这只是我的意见。但是,在作为开发人员超过17年之后,我倾向于更严格的合同和我的知识,而不是自由地做任何您可能想到的事情(就像发生在许多动态语言中一样)。
我个人想尽可能多地学习。我决定必须选择困难的方法,这意味着我要从头开始实施所有内容。我使用R作为模型和灵感。它在图书馆中拥有巨大的财富,并且积累了很多经验。但是,R作为编程语言对我来说是一场噩梦。因此,我决定使用Java,并且不使用任何其他库。那只是因为我的经验,没有别的。
如果有时间,最好的办法就是花些时间处理所有这些事情。这样,您将为自己赢得最适合自己的最佳答案。Dijkstra曾经说过,这些工具会影响您的思维方式,因此建议您先了解您的工具,然后再让它们为您的思维建模。您可以在他的著名论文《谦虚程序员》中了解更多
没有解决所有与数据相关的问题的灵丹妙药语言。语言选择取决于问题的背景,数据的大小,如果您在工作场所工作,则必须坚持使用它们。
就个人而言,由于它的可视化库和交互样式,我比Python更常使用R。但是,如果我需要更高的性能或结构化代码,则一定要使用Python,因为它具有一些最佳的库,如SciKit-Learn,numpy,scipy等。在项目中我可以同时使用R和Python。
因此,如果您开始从事数据科学工作,我建议您同时学习两者,这并不困难,因为Python还为R和Pandas提供了类似的接口。
如果必须处理更大的数据集,则无法逃脱使用Java构建的生态系统(Hadoop,Pig,Hbase等)。
所有其他答案无法解决的问题是许可。
大多数上述精彩的R库都是GPL(例如ggplot2,data.table)。这样可以防止您以专有形式分发软件。
尽管这些库的许多用法并不意味着软件的分发(例如,离线训练模型),但GPL本身可能会诱使公司停止使用它们。至少以我的经验。
另一方面,在python领域中,大多数库具有业务友好的发行许可证,例如BSD或MIT。
在学术界,许可问题通常不是问题。
添加到所提供的注释中的内容不多。唯一的事情可能是此图表出于数据科学目的将R与Python进行了比较http://blog.datacamp.com/r-or-python-for-data-analysis/
我还没有尝试过R(好一点,但是不足以进行很好的比较)。但是,这是Python的一些优势:
element in a_list
,for element in sequence
,matrix_a * matrix_b
(为矩阵乘法),...与Python相比,我更喜欢Python,因为Python是一种完整的编程语言,因此我可以进行端到端的机器学习任务,例如使用以Python编写的HTTP服务器收集数据,执行高级ML任务,然后在线发布结果。这一切都可以在Python中完成。实际上,我发现R较难学习,并且学习Python的收益要大得多,因为R几乎可以用于任何编程任务。
R:R是开源的对应物。传统上一直在学术和研究中使用。由于其开源性质,因此最新技术会迅速发布。互联网上有很多文档,这是一个非常划算的选择。Python:随着起源作为一种开放源代码脚本语言,Python的使用随着时间的推移而增长。如今,它具有各种库(numpy,scipy和matplotlib)和功能,几乎可以用于您想要进行的任何统计操作/模型构建。自从引入大熊猫以来,它在结构化数据的操作上已变得非常强大。
Python代码
从sklearn导入linear_model
x_train = input_variables_values_training_datasets y_train = target_variables_values_training_datasets x_test = input_variables_values_test_datasets
线性= linear_model.LinearRegression()
linear.fit(x_train,y_train)linear.score(x_train,y_train)
print('系数:\ n',linear.coef_)print('拦截:\ n',linear.intercept_)
预测= linear.predict(x_test)R代码
x_train <-input_variables_values_training_datasets y_train <-target_variables_values_training_datasets x_test <-input_variables_values_test_datasets x <-cbind(x_train,y_train)
线性<-lm(y_train〜。,data = x)摘要(线性)
预测=预测(线性,x_test)