Python機器學習課程 線性回歸演算法

2021-10-12 10:16:46 字數 3286 閱讀 5383

最基本的機器學習演算法必須是具有單個變數的線性回歸演算法。如今,可用的高階機器學習演算法,庫和技術如此之多,以至於線性回歸似乎並不重要。但是,學習基礎知識總是乙個好主意。這樣,您將非常清楚地理解這些概念。在本文中,我將逐步解釋線性回歸演算法。

想法和公式

線性回歸使用非常基本的**思想。公式如下:

y = c + bx

我們在學校都學過這個公式。提醒您,這是一條直線方程。在此,y是因變數,b是斜率,c是截距。通常,對於線性回歸,

它寫為:

在這裡," h"是假設或**的因變數,x是輸入特徵,theta0和theta1是係數。theta值從頭開始隨機初始化。然後使用梯度下降,我們將更新theta值以最小化成本函式。這是成本函式和梯度下降的解釋。

成本函式和梯度下降

成本函式確定**與原始因變數的距離。這是公式

任何機器學習演算法的想法都是最小化成本函式,以使假設接近於原始因變數。為此,我們需要優化theta值。如果我們分別基於theta0和theta1取成本函式的偏導數,則會得到梯度下降。要更新theta值,我們需要從相應的theta值中減去梯度下降:

經過偏導數後,以上公式將變為:

此處,m是訓練資料的數量,而alpha是學習率。我正在談論一種變數線性回歸。這就是為什麼我只有兩個theta值的原因。如果有很多變數,則每個變數都有theta值。

工作例項

我將要使用的資料集來自安德魯·伍(andrew ng)的coursera機器學習課程。這是在python中逐步實現線性回歸的過程。

(1) 匯入包和資料集。

在此資料集中,列零是輸入要素,列1是輸出變數或因變數。我們將使用列0使用上面的直線公式**列1。

(2) 將第1列與第0列相對應。

輸入變數和輸出變數之間的關係是線性的。當關係為線性時,線性回歸效果最佳。

(3) 初始化theta值。我正在將theta值初始化為零。但是任何其他值也應該起作用。

theta = [0,0]
(4) 根據前面討論的公式定義假設和成本函式。

def hypothesis(theta, x):  

return theta[0] + theta[1]*x 

def cost_calc(theta, x, y):  

return (1/2*m) * np.sum((hypothesis(theta, x) - y)**2)

(5) 計算訓練資料的數量作為dataframe的長度。然後定義梯度下降函式。在此函式中,我們將更新theta值,直到cost函式達到最小值為止。可能需要任何數量的迭代。在每次迭代中,它將更新theta值,並使用每個更新的theta值來計算成本以跟蹤成本。

m = len(df) 

def gradient_descent(theta, x, y, epoch, alpha): 

cost =  

i = 0 

while i 

hx = hypothesis(theta, x) 

theta[0] -= alpha*(sum(hx-y)/m) 

theta[1] -= (alpha * np.sum((hx - y) * x))/m 

i += 1 

return theta, cost

(6) 最後,定義**函式。它將從梯度下降函式獲得更新的theta並**假設或**的輸出變數。

def predict(theta, x, y, epoch, alpha): 

theta, cost = gradient_descent(theta, x, y, epoch, alpha) 

return hypothesis(theta, x), cost, theta

(7) 使用**函式,找到假設,成本和更新的theta值。我選擇學習率為0.01,然後將這個演算法執行2000個時期或迭代。

y_predict, cost, theta = predict(theta, df[0], df[1], 2000, 0.01)
最終theta值為-3.79和1.18。

(8) 在同一圖中繪製原始y和假設或**y。

假設圖是公式中所預期的一條直線,並且該直線正在最佳位置通過。

(9) 記住,我們在每次迭代中都跟蹤成本函式。讓我們繪製成本函式。

如前所述,我們的目的是優化theta值以最小化成本。從該圖可以看出,成本從一開始就急劇下降,然後穩定下來。這意味著theta值已按照我們的預期正確優化。

機器學習之線性回歸以及Logistic回歸

1 線性回歸 回歸的目的是 數值型資料的目標值。目標值的計算是通過乙個線性方程得到的,這個方程稱為回歸方程,各未知量 特徵 前的係數為回歸係數,求這些係數的過程就是回歸。對於普通線性回歸使用的損失函式一般為平方誤差。把其用最小二乘法進行優化得到的關於係數w求導所得到的矩陣形式的表示式求得的 w便為最...

python機器學習 線性回歸

要理解線性回歸,首先得對線性和回歸的基本概念進行回顧。線性 兩個變數之間存在一次方函式關係即一階導數為常數的函式。回歸 確定兩種或兩種以上變數間相互依賴的定量關係的一種統計分析方法。回歸分析按照涉及的變數的多少,分為一元回歸和多元回歸分析。分類與回歸的區別 分類 輸出為離散資料 目的 尋找決策邊界 ...

回歸 好壞 機器學習 python機器學習線性回歸

線性回歸是最簡單的機器學習模型,其形式簡單,易於實現,同時也是很多機器學習模型的基礎。對於乙個給定的訓練集資料,線性回歸的目的就是找到乙個與這些資料最吻合的線性函式。一般情況下,線性回歸假設模型為下,其中w為模型引數 線性回歸模型通常使用mse 均方誤差 作為損失函式,假設有m個樣本,均方損失函式為...