【问题标题】:Is there any reason to prefer functional programming for data mining projects? [closed]是否有任何理由更喜欢数据挖掘项目的函数式编程? [关闭]
【发布时间】:2011-05-06 21:37:10
【问题描述】:

我正在研究启动一个数据挖掘项目的可能性,该项目将包括对数据的密集计算和转换,并且应该相对容易扩展。

根据您的经验,编程语言的选择对于上述项目来说至关重要吗?

例如,如果我已经在 J​​VM 环境中工作,我应该更喜欢 Clojure 而不是纯 Java 吗?功能环境是否保证更容易扩展?性能更好?

抛开对语言的熟悉程度、工具链等其他因素。根据您的经验,语言的选择是否至关重要?

【问题讨论】:

  • 您“搁置”的因素至关重要。如果你只是为了这个项目开始学习 Clojure,你要么无法发挥它的优势——在这种情况下,你可以坚持使用例如Java - 否则会浪费太多时间,以至于这项任务必须非常棒才能弥补损失的时间。

标签: java programming-languages functional-programming clojure data-mining


【解决方案1】:

为数据挖掘项目选择函数式编程有几个很好的理由。

  1. 通常是数据挖掘项目 涉及算法和数学 (比其他类型的系统) 可以更容易地表达为 函数式编程
  2. 数据 采矿项目将涉及 聚合函数 - 功能更好 编程,比如 Clojure
  3. 数据 采矿计划也将更多 适合并行性 - 绝对 数据并行性,甚至可以是 任务并行性,又是一个强项 函数式编程
  4. 和 Clojure 等函数式语言 无论如何都可以与java接口进行I/O、文件读写
  5. 我 认为可以学习工具链 容易地;它并没有那么不同,所以这不应该是一个因素。

我自己也问过同样的问题,并且对 Clojure 给出了一个很大的肯定 - 我仍在考虑如何将 R 包含在组合中。

【讨论】:

  • 另外,数据挖掘操​​作可以看作是一个数据转换链,这是函数式编程语言非常擅长的。
  • 看看 Incanter 与 R 类似,但在 Clojure 中。
【解决方案2】:

使用您熟悉的最强大的语言。

无论如何,如果您想获得可扩展性,您需要一个 map-reduce 实现,它允许您并行化和收集结果。

【讨论】:

    【解决方案3】:

    没有特别的原因。选择你觉得最舒服的语言。

    查看我对similar question about natural language processing 的回复。我认为人们认为晦涩难懂的语言适合 AI 的一些功能确实适得其反。

    【讨论】:

    • “我认为人们认为晦涩难懂的语言适合 AI 的某些功能确实适得其反。”
    • @missingfaktor:查看我链接到的答案。
    【解决方案4】:

    通常,函数式编程解决方案更具可扩展性。

    【讨论】:

    • 更常见的是,它们不是。
    猜你喜欢
    • 2011-07-13
    • 2014-05-18
    • 2011-02-28
    • 1970-01-01
    • 2012-11-01
    • 2011-10-28
    • 2014-03-17
    • 2018-05-07
    • 2015-04-30
    相关资源
    最近更新 更多