是否有任何理由更喜欢数据挖掘项目的函数式编程? [关闭]
Posted
技术标签:
【中文标题】是否有任何理由更喜欢数据挖掘项目的函数式编程? [关闭]【英文标题】:Is there any reason to prefer functional programming for data mining projects? [closed] 【发布时间】:2011-05-06 21:37:10 【问题描述】:我正在研究启动一个数据挖掘项目的可能性,该项目将包括对数据的密集计算和转换,并且应该相对容易扩展。
根据您的经验,编程语言的选择对于上述项目来说至关重要吗?
例如,如果我已经在 JVM 环境中工作,我应该更喜欢 Clojure 而不是纯 Java 吗?功能环境是否保证更容易扩展?性能更好?
抛开对语言的熟悉程度、工具链等其他因素。根据您的经验,语言的选择是否至关重要?
【问题讨论】:
您“搁置”的因素至关重要。如果你只是为了这个项目开始学习 Clojure,你要么无法发挥它的优势——在这种情况下,你可以坚持使用例如Java - 否则会浪费太多时间,以至于这项任务必须非常棒才能弥补损失的时间。 【参考方案1】:为数据挖掘项目选择函数式编程有几个很好的理由。
-
通常是数据挖掘项目
涉及算法和数学
(比其他类型的系统)
可以更容易地表达为
函数式编程
数据
采矿项目将涉及
聚合函数 - 功能更好
编程,比如 Clojure
数据
采矿计划也将更多
适合并行性 - 绝对
数据并行性,甚至可以是
任务并行性,又是一个强项
函数式编程
和
Clojure 等函数式语言
无论如何都可以与java接口进行I/O、文件读写
我
认为可以学习工具链
容易地;它并没有那么不同,所以这不应该是一个因素。
我自己也问过同样的问题,并且对 Clojure 给出了一个很大的肯定 - 我仍在考虑如何将 R 包含在组合中。
【讨论】:
另外,数据挖掘操作可以看作是一个数据转换链,这是函数式编程语言非常擅长的。 看看 Incanter 与 R 类似,但在 Clojure 中。【参考方案2】:使用您熟悉的最强大的语言。
无论如何,如果您想获得可扩展性,您需要一个 map-reduce 实现,它允许您并行化和收集结果。
【讨论】:
【参考方案3】:没有特别的原因。选择你觉得最舒服的语言。
查看我对similar question about natural language processing 的回复。我认为人们认为晦涩难懂的语言适合 AI 的一些功能确实适得其反。
【讨论】:
“我认为人们认为晦涩难懂的语言适合 AI 的某些功能确实适得其反。” @missingfaktor:查看我链接到的答案。【参考方案4】:通常,函数式编程解决方案更具可扩展性。
【讨论】:
更常见的是,它们不是。以上是关于是否有任何理由更喜欢数据挖掘项目的函数式编程? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
对于更新不依赖于先前值的不可变集合,是不是有任何理由更喜欢 Interlocked 而不是 volatile?