次のプログラムがあります。
open System
open MathNet.Numerics
open MathNet.Numerics.LinearAlgebra
//entropy
let entropy v =
let pct = v / v.Sum()
let l1 = pct.Map (fun x -> System.Math.Log(x, 2.0))
let p = Vector.map2 (fun x y -> x * y) pct l1
let e = - p.Sum()
e
[<EntryPoint>]
let main argv =
let v1 = vector [ 1.0 ; 3.0 ; 5.0 ]
let e1 = entropy v1
0 // return an integer exit code
エントロピー関数の変数 v に型注釈を付ける必要があります。ご覧のとおり、関数 (v1) に渡すパラメーターは、MathNet.Numerics.LinearAlgebra.vector として定義されています。型注釈の多くのオプションを試しましたが、成功しませんでした。
それは何ですか?どうやって答えを思いついたのかを理解するのを手伝ってくれればボーナスポイント。