2015-06-05 71 views
1

所以我想在vb.net中使用math.net。我已經複製了網站上的c#摘錄,並試圖將其轉換爲vb.net。我得到了這一點:在VB.Net中使用Math.net進行多重回歸

Dim m = Matrix(Of Double).Build.DenseOfArray({{1.0, 4.0}, {2.0, 5.0}, {3.0, 2.0}}) 
Dim y = Vector(Of Double).Build.DenseOfArray({15, 20, 10}) 
Dim p = MultipleRegression.NormalEquations(m, y, True) 
Dim a = p(0) 
Dim b = p(1) 
Dim c = p(2) 

它不喜歡多重回歸線,我不知道爲什麼。

任何幫助,將不勝感激

+0

你可以張貼的C#代碼? – OneFineDay

+1

它如何不喜歡'MultipleRegression.NormalEquations(m,y,True)'函數?錯誤? – OneFineDay

+0

@OneFineDay,謝謝你的時間。 Christoph Ruegg能夠回答我的問題。 –

回答

3

的重載用布爾攔截參數目前接受陣列只,而不是矩陣(因爲你通常有正確的形狀已經準備矩陣)。

手動添加攔截:

Dim m = Matrix(Of Double).Build.DenseOfArray({{1.0, 1.0, 4.0}, {1.0, 2.0, 5.0}, {1.0, 3.0, 2.0}}) 
Dim y = Vector(Of Double).Build.DenseOfArray({15, 20, 10}) 
Dim p = MultipleRegression.NormalEquations(m,y) 
Dim a = p(0) 
Dim b = p(1) 
Dim c = p(2) 

或者代碼:

Dim m = Matrix(Of Double).Build.DenseOfArray({{1.0, 4.0}, {2.0, 5.0}, {3.0, 2.0}}) 
Dim y = Vector(Of Double).Build.DenseOfArray({15, 20, 10}) 

' add intercept 
Dim mi = m.InsertColumn(0, Vector(Of Double).Build.Dense(m.RowCount, 1.0)) 

Dim p = MultipleRegression.NormalEquations(mi,y) 
Dim a = p(0) 
Dim b = p(1) 
Dim c = p(2) 
+0

謝謝,效果很好。 –

相關問題