【機器學習實戰】線性迴歸

目錄:

一、介紹

1.線性迴歸的類型

2.假設條件

二、用Python構建一個迴歸器步驟

三、用Python實現簡單線性迴歸

1.模擬數據及繪圖

2.簡單線性迴歸過程

3.使用scikit-learn中的線性迴歸

四、用Python實現多元線性迴歸

1.加載Boston住房數據集數據

2.數據集分爲訓練集和測試集

3.計算出係數與截距

4.繪製散點圖

五、應用領域


一、介紹

線性迴歸可以定義爲統計模型,用於分析因變量與給定的一組自變量之間的線性關係。變量之間的線性關係意味着,當一個或多個自變量的值更改(增加或減少)時,因變量的值也將相應更改(增加或減少)。

數學上的關係可以藉助以下方程式來表示:

Y = aX + b

在這裏,Y是我們試圖預測的因變量,X是我們用來進行預測的自變量,a是迴歸線的斜率,b是一個常數,稱爲截距。

1.線性迴歸的類型

  • 簡單線性迴歸
  • 多元線性迴歸

2.假設條件

以下是關於由線性迴歸模型建立的數據集的一些假設:

多重共線性:線性迴歸模型假設數據中很少或沒有多重共線性。基本上,當自變量或要素具有相關性時,就會發生多重共線性。

自相關:數據中幾乎沒有自相關。基本上,當殘差之間存在依賴性時,就會發生自相關。

變量之間的關係:線性迴歸模型假定響應變量和特徵變量之間的關係必須是線性的。

二、用Python構建一個迴歸器步驟

Scikit-learn,一個用於機器學習的Python庫,也可以用於在Python中建立一個迴歸器。

在以下示例中,我們將構建基本的迴歸模型,該模型將使一條線適合數據,即線性迴歸。在Python中構建迴歸器的必要步驟如下:

步驟1:導入必要的python包。

步驟2:導入數據集。

步驟3:將數據整理到訓練和測試集中。

步驟4:模型構建和預測。

第5步:繪圖和可視化。

步驟6:性能計算。性能指標包括:均方誤差MSE、均方根誤差RMSE、平均絕對誤差MAE與R Squared等。

三、用Python實現簡單線性迴歸

1.模擬數據及繪圖

# 導包
import numpy as np
import matplotlib.pyplot as plt

# 模擬數據
x = np.array([1., 2., 3., 4., 5.])
y = np.array([1., 3., 2., 3., 5.])

# 繪製散點圖
plt.scatter(x, y)
plt.axis([0, 6, 0, 6]) # 設置x,y軸的氛圍
plt.show()

2.簡單線性迴歸過程

①計算迴歸線斜率和截距

斜率和截距公式如下(注:本案例斜率爲a,截距爲b):

# 求x,y的平均值
x_mean = np.mean(x)
y_mean = np.mean(y)

# 求斜率a和截距b
num = 0.0
d = 0.0
for x_i, y_i in zip(x, y):
    num += (x_i - x_mean) * (y_i - y_mean)
    d += (x_i - x_mean) ** 2

a = num / d
b = y_mean - a * x_mean

print(a)
print(b)
0.8
0.39999999999999947

②繪製帶回歸線的散點圖

# 迴歸線
y_hat = a * x + b

# 繪製帶回歸線的散點圖
plt.scatter(x, y)
plt.plot(x, y_hat, color = 'r')
plt.axis([0, 6, 0, 6])
plt.show()

③預測數據

x_predict = 6
y_predict = a * x_predict + b
print(y_predict)
5.2

3.使用scikit-learn中的線性迴歸

# 導包
from sklearn.linear_model import LinearRegression
import numpy as np

# 創建線性迴歸對象
reg = LinearRegression()

# 模擬數據 
x = np.array([1., 2., 3., 4., 5.])
x_train = x.reshape(-1,1)
y_train = np.array([1., 3., 2., 3., 5.])

# 訓練
reg.fit(X_train,y_train)


# 計算出的斜率與截距
print(reg.coef_)    
print(reg.intercept_)  
array([0.8])
0.39999999999999947
# 預測數據
y_predict = reg.predict(x_train)

# 繪圖
plt.scatter(x_train, y_train)
plt.plot(x, y_predict, color = 'r')
plt.axis([0, 6, 0, 6])
plt.show()

很顯然,結果與之前預測的基本一致。

四、用Python實現多元線性迴歸

簡單線性迴歸的擴展使用兩個或多個特徵預測響應。數學上,我們可以解釋如下:

考慮具有n個觀測值,p個特徵(即自變量)和y作爲一個響應(即因變量)的數據集,p個特徵的迴歸線可以如下計算:

1.加載Boston住房數據集數據

# 導包
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets

# 加載boston數據
boston = datasets.load_boston()

# 定義特徵矩陣X和響應向量y
X = boston.data
y = boston.target

# 過濾掉y=50的數據,因爲y溢出的數據都爲50,考慮後續數據預測的準確性,刪除
X = X[y < 50.0]
y = y[y < 50.0]

X.shape    # 顯示爲(490, 13)

2.數據集分爲訓練集和測試集

from model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, seed = 666)  # seed爲隨機種子

3.計算出係數與截距

from sklearn.linear_model import LinearRegression

# 創建線性迴歸對象並訓練模型
reg = LinearRegression()
reg.fit(X_train, y_train)

# 計算出的係數與截距
print(reg.coef_)    
print(reg.intercept_)  
array([-1.20354261e-01,  3.64423279e-02, -3.61493155e-02,  5.12978140e-02,
       -1.15775825e+01,  3.42740062e+00, -2.32311760e-02, -1.19487594e+00,
        2.60101728e-01, -1.40219119e-02, -8.35430488e-01,  7.80472852e-03,
       -3.80923751e-01])
34.11739972320428

4.繪製散點圖

plt.scatter(reg.predict(X_train), reg.predict(X_train) - y_train, color = "green", s = 10, label = 'Train data')
plt.scatter(reg.predict(X_test), reg.predict(X_test) - y_test, color = "blue", s = 10, label = 'Test data')
plt.hlines(y = 0, xmin = 0, xmax = 50, linewidth = 2)
plt.legend(loc = 'upper right')
plt.title("Residual errors")  # 殘差
plt.show()

五、應用領域

ML迴歸算法的應用如下:

1.預測或預測分析 

迴歸的重要用途之一是預測或預測分析。例如,我們可以預測GDP,石油價格或簡單地說隨着時間的推移而變化的定量數據。

2.優化 

我們可以藉助迴歸優化業務流程。例如,商店經理可以創建統計模型以瞭解顧客來訪的時間。

3.錯誤糾正 

在業務中,做出正確的決定與優化業務流程同等重要。迴歸可以幫助我們做出正確的決定,也可以幫助我們糾正已經實施的決定。

4.經濟學 

這是經濟學中最常用的工具。我們可以使用迴歸來預測供應,需求,消耗,庫存投資等。

5.財務 

金融公司始終對最小化風險投資組合感興趣,並希望瞭解影響客戶的因素。所有這些都可以藉助迴歸模型進行預測。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章