javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

.net-在F#中用于机器学习的资源

我已经学习了使用Matlab作为原型设计工具的机器学习课程。 由于我沉迷于F#,所以我想继续在F#中进行机器学习。

我可能想在原型和生产中都使用F#,因此机器学习框架将是一个不错的开始。 否则,我可以从一系列库开始:

  • 高度优化的线性代数库
  • 统计包
  • 可视化库(允许绘制图表,与图表,图表进行交互...)
  • 并行计算工具箱(类似于Matlab并行计算工具箱)

对我来说,最重要的资源是书籍,博客文章和有关以功能编程语言(F#/ OCaml / Haskell ...)进行机器学习的在线课程。

谁能建议这些资源? 谢谢。


编辑:

这是基于以下答案的摘要:

机器学习框架:

  • Infer.NET:用于具有良好F#支持的图形模型中的贝叶斯推理的.NET框架。
  • WekaSharper:围绕流行的数据挖掘框架Weka的F#包装器。
  • Microsoft Sho:.NET平台上用于数据分析(包括矩阵运算,优化和可视化)的持续环境开发。

相关库:

  • Math.NET数字:内部使用Intel MKL和AMD ACML进行矩阵运算并支持统计功能。

  • Microsoft Solver Foundation:一个很好的线性编程和优化任务框架。

  • FSharpChart:F#中一个不错的数据可视化库。

阅读清单:

  • 数值计算:从F#中的机器学习开始非常好,并介绍了在F#中使用这些数学库的各种工具和技巧/窍门。
  • F#和数据挖掘博客:强烈推荐“数值计算”一章的作者Yin Zhu。
  • 用F#替代机器学习的Octave / Matlab:Gustavo刚开始使用F#作为开发工具开始一系列博客文章。 很高兴看到许多库被插入在一起。
  • F#中的“机器学习在行动”示例:Mathias已将一些示例从Python转换为F#。 它们在Github中可用。
  • Hal Daume的主页:Hal在OCaml中编写了许多机器学习库。 如果您不确定函数式编程不适用于机器学习,您会感到放心。

也欢迎任何其他指示或建议。

trans by 2019-12-29T08:30:32Z

函数式编程-对Java 8流进行分区

如何在Java 8 Stream上实现“分区”操作? 划分是指将流分成给定大小的子流。 它在某种程度上与Guava Iterators.partition()方法相同,只是希望分区是延迟评估的Streams,而不是List的Streams。

trans by 2019-12-28T16:11:51Z

lisp-关于函数式编程的好开始是什么?

我喜欢在舒适的地方学习语言,但是很难找到开始使用功能性语言的地方。 我听到了很多有关计算机程序的结构和解释的好东西,但是几年前当我试图通读它时,它似乎让我头疼。 与网站相比,我在书本方面做得更好,但是当我访问本地书店时,LISP上的书看起来有些吓人。

那么什么是一个很好的起点? 我的目标是能够使用功能性编程语言在6个月左右的时间内解决简单的问题,并能够转移到更高级的主题,能够识别功能性语言何时才是适合工作的正确工具,并使用该语言来 在2-3年内解决更多问题。 我喜欢那些例子很多但也面临挑战的书籍。 功能语言是否存在这种情况?

trans by 2019-12-27T01:27:06Z

oop-闭包:为什么如此有用?

作为OO开发人员,也许我很难看到它的价值。 他们赋予什么附加值? 它们适合面向对象世界吗?

trans by 2019-12-27T00:34:01Z

haskell-“纯”在“纯功能语言”中是什么意思?

Haskell被称为“纯功能语言”。

在这种情况下,“纯”是什么意思? 这对程序员有什么后果?

trans by 2019-12-25T11:38:53Z

javascript-序列的Python“枚举”的ES6等效项是什么?

Python具有内置函数enumerate,可迭代enumerate对。

ES6是否具有等效的数组? 它是什么?

def elements_with_index(elements):
    modified_elements = []
    for i, element in enumerate(elements):
         modified_elements.append("%d:%s" % (i, element))
    return modified_elements

print(elements_with_index(["a","b"]))
#['0:a', '1:b']

没有enumerate的ES6等效文件:

function elements_with_index(elements){
     return elements.map(element => elements.indexOf(element) + ':' + element);
 }

console.log(elements_with_index(['a','b']))
//[ '0:a', '1:b' ]
trans by 2019-11-17T06:48:12Z

函数式编程-为什么JavaScript中没有Array.prototype.flatMap?

flatMap在集合上非常有用,但是javascript在拥有flatMap时却不提供。为什么?

有什么方法可以以简单有效的方式在javascript中模拟flatMap,而无需手动定义flatMap

trans by 2019-11-15T09:59:54Z

编程语言-什么是Scheme中或一般情况下使用的“ thunk”?

我在与Scheme和类似地区相关的代码和文档中的很多地方都遇到了“ thunk”一词。 我猜想它是一个过程的通用名称,它只有一个正式参数。 那是对的吗? 如果是,还有更多内容吗? 如果没有,请吗?

例如。 在SRFI 18中的“程序”部分中。

trans by 2019-11-13T00:00:46Z

haskell-纯功能数据结构的好处是什么?

关于数据结构的文本很多,数据结构的代码库也很多。 我了解纯功能数据结构更容易推论。 但是,我很难理解在实用代码中使用纯功能数据结构(无论是否使用功能编程语言)相对于命令性代码所具有的现实优势。 有人可以提供一些纯粹的功能数据结构具有优势的现实案例吗?为什么?

像我这样的例子使用了programming_language中的data_structure_name来执行应用程序,因为它可以执行某些操作。

谢谢。

PS:我所说的纯功能数据结构与持久性数据结构不同。 持久数据结构是不变的数据结构??? 另一方面,纯功能数据结构是纯操作的数据结构。

trans by 2019-11-10T01:00:28Z

java-是否有可用于任何lambda的无操作(NOP)的方法参考?

这听起来像是一个奇怪的问题,但是有一种方法可以引用Java 8中Lambda的标准no-op(aka空操作,空模式方法,无操作,无操作方法)方法。

当前,我有一个方法,该方法需要一个void foo(Consumer<Object>),并且我想给它一个空操作,我必须声明:

foo(new Consumer<Object>() { 
  public void accept(Object o) { 
    // do nothing 
  }
}

我希望能够执行以下操作:

foo(Object::null)

代替。 是否存在类似的东西?

不确定如何使用多参数方法-也许这是Java中lambda的缺陷。

trans by 2019-11-09T20:27:49Z

语言不可知-纯度与参照透明度

术语的定义确实有所不同,但是我一直认为其中一个表示另一个。 我不认为表达式是参照透明的但不是纯净的,反之亦然。

维基百科针对这些概念保留了单独的文章,并说:

从参照透明:

如果所有功能都涉及   表达式是纯函数,那么   该表达式是引用性的   透明。 还有些不纯   功能可以包含在   表达式,如果它们的值是   被丢弃,其副作用是   微不足道。

从纯表达式:

需要纯函数   构造纯表达式。 [...]纯   表达式通常称为   参照透明。

我发现这些陈述令人困惑。 如果所谓的“不纯函数”带来的副作用微不足道,以至于在不实质性更改程序的情况下不执行它们(即用其值替换对此类函数的调用),就好像它在纯函数中一样 第一名,不是吗?

有没有更简单的方法来了解纯表达式和参照透明表达式(如果有)之间的区别? 如果存在差异,可以使用示例表达式清楚地证明了这一点。

trans by 2019-11-06T18:59:21Z

函数式编程-“封闭是穷人的对象,反之亦然”-这是什么意思?

封闭是穷人的对象,反之亦然。

我已经在网络上的许多地方(包括SO)看到了此声明,但我不太理解它的含义。 有人可以解释一下到底是什么意思吗?

如果可能,请在回答中包括示例。

trans by 2019-11-06T07:36:18Z

haskell-OOP接口和FP类型类之间的区别

可能重复:
Java接口和Haskell类型类:区别和相似之处?

当我开始学习Haskell时,我被告知类型类比接口更强大。

一年后,我广泛使用了接口和类型类,但还没有看到有关它们之间的区别的示例或说明。 这要么不是自然而然的启示,要么是我错过了一些显而易见的事情,或者实际上并没有真正的区别。

搜索互联网并没有发现任何实质性的东西。 所以,你有答案吗?

trans by 2019-11-04T00:16:07Z

函数式编程-在Has中维护复杂状态

假设您正在Haskell中建立一个相当大的模拟。 有许多不同类型的实体,其属性会随着仿真的进行而更新。 举例来说,假设您的实体称为“猴子”,“大象”,“熊”等。

您维护这些实体状态的首选方法是什么?

我想到的第一个也是最明显的方法是:

mainLoop :: [Monkey] -> [Elephant] -> [Bear] -> String
mainLoop monkeys elephants bears =
  let monkeys'   = updateMonkeys   monkeys
      elephants' = updateElephants elephants
      bears'     = updateBears     bears
  in
    if shouldExit monkeys elephants bears then "Done" else
      mainLoop monkeys' elephants' bears'

Monkey函数签名中明确提及每种类型的实体已经很丑陋。 您可以想象,如果拥有20种实体,它将变得多么可怕。 (对于复杂的模拟,这不是不合理的20。)因此,我认为这是不可接受的方法。 但是它的优点是,像Elephant这样的函数在其工作中非常明确:它们获取Monkey列表并返回一个新列表。

因此,下一个想法是将所有内容都放到一个拥有所有状态的大数据结构中,从而清除Monkey的签名:

mainLoop :: GameState -> String
mainLoop gs0 =
  let gs1 = updateMonkeys   gs0
      gs2 = updateElephants gs1
      gs3 = updateBears     gs2
  in
    if shouldExit gs0 then "Done" else
      mainLoop gs3

有人建议我们将Monkey包裹在State Monad中,然后在Elephant中致电Elephant,等等。 有人宁愿建议我们使用功能组合对其进行清理。 我想也可以。 (顺便说一句,我是Haskell的新手,所以也许我对此有些误解。)

但是问题是,像Monkey这样的函数无法从其类型签名中提供有用的信息。 您不能真正确定它们的作用。 当然,Elephant是一个描述性的名称,但这实在没有什么可安慰的。 当我传递一个神物并说“请更新我的全局状态”时,我感到我们回到了当务之急。 感觉就像全局变量一样,您可以使用它的名字:您拥有一个对全局状态有所作为的函数,您将其称为“函数”,并且希望获得最佳状态。 (我想您仍然避免在命令式程序中全局变量会出现一些并发问题。但是,并发并不是全局变量几乎唯一的错。)

另一个问题是:假设对象需要交互。 例如,我们有一个这样的函数:

stomp :: Elephant -> Monkey -> (Elephant, Monkey)
stomp elephant monkey =
  (elongateEvilGrin elephant, decrementHealth monkey)

假设在Monkey中有一个叫它的名字,因为这是我们检查是否有大象在任何猴子踩踏的地方。 在这种情况下,您如何优雅地将更改传播给猴子和大象? 在我们的第二个示例中,Elephant接收并返回了一个上帝对象,因此它可以同时影响这两个更改。 但是,这只会进一步模糊我的观点,并强化我的观点:有了上帝的对象,您实际上只是在改变全局变量。 而且,如果您不使用God对象,则不确定如何传播这些类型的更改。

该怎么办? 当然,许多程序都需要管理复杂的状态,所以我猜想有一些众所周知的方法可以解决此问题。

仅出于比较的目的,这就是我如何解决OOP世界中的问题。 将有MonkeyElephant等对象。 我可能会有类方法来对所有活体动物进行查找。 也许您可以按位置,按ID进行查找。 由于查找函数基础的数据结构,它们将在堆上保持分配状态。 (我假设是GC或引用计数。)它们的成员变量会一直变异。 任何类别的任何方法都将能够突变任何其他类别的任何活体动物。 例如。 Elephant可以具有stomp方法,该方法将减少传入的Monkey对象的运行状况,并且无需通过该方法

同样,在Erlang或其他面向参与者的设计中,您可以相当优雅地解决这些问题:每个参与者都维护自己的循环并因此维护自己的状态,因此您永远不需要上帝对象。 消息传递允许一个对象的活动触发其他对象的更改,而无需一堆东西一直返回到调用堆栈。 但是我听说它说Haskell的演员不满意。

trans by 2019-11-03T18:46:44Z

scala-什么是monoid同态?

我已经从Monoid Morphisms,Products和Coproducts中阅读了有关Monoid同态的知识,并且无法理解100%。

作者说(强调原文):

String函数从Int映射到length,同时保留   体结构。 这样的功能,可以将一个半身像映射到   另一个以这种保存方式被称为“ monoid同态”。 在   一般,适用于等分体String => IntInt,同构f: M => N,以及所有值   x:My:M,以下等式成立:

String

他的意思是说,由于数据类型StringInt是monoid,并且函数length映射了String => Int保留了monoid结构(Int),所以被称为monoid同态,对吗?

trans by 2019-11-03T06:25:54Z

函数式编程-带callb的Python中的any()函数

Python标准库定义了True函数

如果iterable的任何元素为true,则返回True。 如果iterable为空,则返回False。

它仅检查元素是否评估为True。我希望它能够执行以下操作,因此指定一个回调来告知元素是否符合要求,例如:

any([1, 2, 'joe'], lambda e: isinstance(e, int) and e > 0)
trans by 2019-10-16T01:31:34Z

f#-将选项类型列表压缩为仅包含非不包含元素的最佳方法?

我出乎意料地遇到麻烦,从“选项”列表转到仅包含“某些”元素的列表。

我最初的尝试是:

    let ga = List.filter (fun xx ->
        match xx with
        | Some(g) -> true
        | None -> false) gao 

但是,当然,此结果类型仍然是“选项列表”。 我不知道如何使用List.map来压缩它,因为您必须在match语句中处理所有情况。 我有一个丑陋的解决方案,但我想知道是否还有更好的解决方案。

丑陋:

    let rec gOptRemove gdec gacc = 
        match gdec with 
        | head :: tail -> 
            match head with 
            | Some(a) -> gOptRemove tail (a :: gacc)
            | None -> gOptRemove tail gacc
        | [] -> gacc

我宁愿找到一种非递归解决方案,或者找出这种事情的标准方法。

trans by 2019-10-15T12:35:05Z

scala-Groovy集合的地图方法

Groovy中是否有map方法? 我想对以下Scala代码段执行类似的操作:

scala> val l = List(1, 2, 3)
l: List[Int] = List(1, 2, 3)

scala> l.map(_ + 1)
res0: List[Int] = List(2, 3, 4)
trans by 2019-10-13T23:26:31Z

oop-为什么Haskell代数数据类型“封闭”?

如果我错了,请纠正我,但是Haskell中的代数数据类型似乎在许多用OO语言使用类和继承的情况下很有用。 但是有一个很大的区别:一旦声明了代数数据类型,就无法将其扩展到其他位置。 它是“关闭的”。 在OO中,您可以扩展已经定义的类。 例如:

data Maybe a = Nothing | Just a

我无法在以后不修改此声明的情况下以某种方式向该类型添加另一个选项。 那么这个系统有什么好处呢? OO方法似乎可以扩展得多。

trans by 2019-10-13T18:15:49Z

函数式编程-什么是“ n + k模式”,为什么在Haskell 2010中禁止使用它们?

当阅读Wikipedia在Haskell 2010上的条目时,我偶然发现了这一点:

-- using only prefix notation and n+k-patterns (no longer allowed in Haskell 2010)
factorial 0 = 1
factorial (n+1) = (*) (n+1) (factorial n)

“ n + k模式”是什么意思? 我想这是第二行,但是我不明白这可能有什么问题。 谁能解释那里的问题是什么? 为什么在Haskell 2010中不更允许使用这些n + k模式?

trans by 2019-10-13T00:00:43Z

上一页 1 2 3 4 5 6 7 8 9 10 11 12 下一页 共12页