Re: 請問如何計算回歸方程式

看板Python作者 (小邱)時間5年前 (2020/06/26 00:37), 編輯推噓1(101)
留言2則, 2人參與, 5年前最新討論串2/3 (看更多)
※ 引述《aredfish (一切都是假的)》之銘言: : 給定兩個相同長度的list,分別代表x與y的座標,請問我該怎麼用python去計算他的線性回歸方程式y=mx+b 呢? : ----- : Sent from JPTT on my Samsung SM-G930F. 如果你是想了解原理,首先方程式要改成下面比較好算: y0 x0 1 y1 x1 1 m [y2] = [x2 1][b] y3 x3 1 . . 1 . . 1 . . 1 然後換成 Y = XA 表示 於是你會發現只有A是未知數, X,Y都是你採樣到的數據, 而我們想找到一個A可以讓所有的殘值總和最小, 那麼A的解我們想像對兩側左邊乘一個(X+),會使得(X+)X = I --> 單位矩陣, 那原式就會變成(X+)Y = (X+)XA = IA = A, 就求得A = (X+)Y 了, 所以關鍵只要找到(X+), m跟b就求出來了! 那麼X+到底是什麼呢? 直接給答案, 就是np.linalg.pinv(X), 所以直接速解: import numpy as np X = ... Y = ... A = np.matmul(np.linalg.pinv(X), Y) print(A) 就解完了 你可以先帶個簡單的二元一次方程式驗算看看: 已知 m = 1, b = 2 (1) m * 0.5 + b = 2.5 (2) m * 2.0 + b = 4.0 import numpy as np X = [[0.5, 1.0], [2.0, 1.0]] Y = [[2.5], [4.0]] A = np.matmul(np.linalg.pinv(X), Y) print(A) 發現會得到解析解, 接著擴大取樣數據且加入誤差會得到擬合的解. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.168.77.17 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1593103031.A.06E.html

06/26 00:40, 5年前 , 1F
詳細理論參考: 統計學-臺大開放式課程
06/26 00:40, 1F

06/26 17:11, 5年前 , 2F
感謝,但一時無法理解,我再仔細想一下
06/26 17:11, 2F
文章代碼(AID): #1UzDAt1k (Python)
討論串 (同標題文章)
文章代碼(AID): #1UzDAt1k (Python)