1
/! \ F # 브랜드 초보자 /! \기능은 매개 변수를 전달없이 작동
나는 나에게
val input : (int * float) [] = [|(1, 1.0); (2, 2.0); (3, 2.25); (4, 4.75); (5, 5.0)|]
val x : float [] = [|1.0; 2.0; 3.0; 4.0; 5.0|]
val y : float [] = [|1.0; 2.0; 2.25; 4.75; 5.0|]
val regression : SimpleLinearRegression = y(x) = 1,075x + -0,224999999999998
val sse : float = 1.06875
val intercept : float = -0.225
val slope : float = 1.075
val mse : float = 0.21375
val rmse : float = 0.4623310502
val r2 : float = 0.9153465347
방법이다 결과를 제공이 코드
#r @"..\packages\Accord.3.4.0\lib\net40\Accord.dll"
#r @"..\packages\Accord.Statistics.3.4.0\lib\net40\Accord.Statistics.dll"
#r @"..\packages\Accord.Math.3.4.0\lib\net40\Accord.Math.dll"
open Accord
open Accord.Statistics.Models.Regression.Linear
let input = [|1,1.;2,2.;3,2.25;4,4.75;5,5.|]
let x = input |> Array.map(fun (x,y) -> float x)
let y = input |> Array.map(fun (x,y) -> y)
let regression = SimpleLinearRegression()
let sse = regression.Regress(x,y)
let intercept = regression.Intercept
let slope = regression.Slope
let mse = sse/float x.Length
let rmse = sqrt mse
let r2 = regression.CoefficientOfDetermination(x,y)
이 가능하다면 SimpleLinearRegression
함수가 작동하지만 우리는 심지어 그것을 전달하지 않습니다 x
및 y
?
그 뒤에있는이 F # 마법은 무엇인지 이해하는 데 참조 할 수 있습니까?
'SimpleLinearRegression'은 함수가 아니라 클래스 생성자입니다. 먼저 그 클래스의 객체를 만들고 이름에'regression'을 부여한 다음'Regress'를 호출합니다 -'regression.Regress (x, y)'- 인수를 전달하는 곳입니다. –