線性回歸演算法實現(最小二乘法, 梯度下降)

2021-08-10 06:23:06 字數 2617 閱讀 3456

一、最小二乘法

import numpy as np;

import matplotlib.pyplot as plt;

初始化資料,網上隨便找的資料, 說是奧運會100公尺短跑用時,以及對應的年份。

dataarray = np.array([[12, 1896], [11, 1900], [11, 1904], [10.8, 1908], [10.8, 1912], 

[10.8, 1920], [10.6, 1924], [10.8, 1928], [10.3, 1932], [10.3, 1936],

[10.3, 1948], [10.5, 1956], [10.2, 1960], [10.0, 1964], [9.95, 1968],

[10.14, 1972], [10.06, 1976], [10.25, 1980], [9.99, 1984], [9.92, 1988],

[9.96, 1992], [9.84, 1996], [9.87, 2000], [9.85, 2004], [9.96, 2008]]);

顯示一下資料,看是什麼樣的。

初始化x和y, x為年份, y為時間。

rows = dataarray.shape[0]

y = np.matrix(dataarray[:, 0:1])

x = np.ones((rows, 2))

x[:, 1] = dataarray[:, 1]

x = np.matrix(x)

使用最小二乘法公式進行計算, 得到直線的引數w, 顯示出直線和資料點。最小二乘法的原理涉及到投影矩陣和最大似然定理等。

可以看到擬合的結果還是不錯的。

二、梯度下降法

對資料進行初始化,和預處理。不進行預處理優化時比較費時,很難達到最優點。

y = dataarray[:, 0:1]

x = dataarray[:, 1:2]

x = (x - 1950) / 50;

y = y - 10.5

隨機初始化直線引數 a0 a1。並顯示影象。

使用梯度下降法進行優化,並顯示影象。

線性回歸 最小二乘法實現

目錄 一 線性回歸 給定由n個屬性描述的樣本x x0,x1,x2,xn 線性模型嘗試學習乙個合適的樣本屬性的線性組合來進行 任務,如 f x w1x1 w2x2 wnxn b w.t x b。通過一定方法學得向量w和常數b後,模型便可以確定下來。而對於給定資料集d xm x1,x2,xn 線性回歸則...

線性回歸,最小二乘法

回歸的定義 對於乙個點集,使用乙個函式去擬合該點集,使點集與擬合函式間的誤差最小,如果這個函式曲線是一條直線,則是線性回歸,如果曲線是二次曲線,則是二次回歸。廣義線性回歸 廣義線性模型是線性模型的擴充套件,其特點是不強行改變資料的自然度量,資料可以具有非線性和非恆定方差結構 59 主要是通過聯結函式...

線性回歸 最小二乘法(二)

上篇文章中介紹了單變數線性回歸,為什麼說時單變數呢,因為它只有單個特徵,其實在很多場景中只有單各特徵時遠遠不夠的,當存在多個特徵時,我們再使用之前的方法來求特徵係數時是非常麻煩的,需要乙個特徵係數乙個偏導式,而卻最要命的時特性的增長時及其迅猛的,幾 十 幾百 幾千 單變數線性回歸 多變數線性回歸 所...