2
我需要找到一組點的最佳擬合迴歸線。 例如,對於該矩陣:Java線性迴歸
int b [][] = { { 3, 1, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 2, 3, 1, 0, 1, 0, 0, 0 },
{ 0, 1, 2, 1, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 3, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 3, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 2, 3, 1 },
{ 0, 0, 0, 0, 0, 1, 1, 1, 2 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 1 } };
每個數字表示的數據點的該位置處的量(重量我想)(其中,行是X軸和列都爲Y)。 我試圖使用apache數學庫中的SimpleRegression類,並遇到一些問題。首先,它似乎不支持權重。第二,我相信我做錯了什麼,即使對於主對角線上只有1的矩陣,斜率/截距結果也沒有意義。
public static void main(String[] args) {
double a[][] = new double[9][9];
for (int i = 0; i < 9; i++)
a[i][i] = 1;
SimpleRegression r = new SimpleRegression(true);
r.addData(a);
System.out.println("Slope = " + r.getSlope());
System.out.println("Intercept = " + r.getIntercept());
}
這給我的結果是不正確的。我會假設這個矩陣表示函數f(x)= x,但我得到的斜率是-0.12499 ..
任何人都可以指出我在做什麼錯了嗎? 我有一種感覺,我不僅濫用代碼,而且數學。
addData([] [])期望一個2xN矩陣我想是爲什麼你不嘗試addData(x,y)單獨? – gpasch
並且認爲應該給座標(i,j)不是值 - 再次不是簡單迴歸的用戶,只是通過閱讀 – gpasch
謝謝,它似乎正在沿着sI預期的方向工作,我一定誤解了方式該方法起作用。閱讀關於維基百科的線性迴歸讓我思考了整個矩陣的線條。 也似乎多次添加相同的座標會增加它的重量。有用的知道。 我毫不猶豫地稱這個解決方案,直到明天早上我再測試一下,但這是一個很好的進展。謝謝。 – TheFooBarWay