1 前言
注意這里的LR指的是Linear Regression,線性回歸。而非邏輯回歸Logistic Regression,雖然二者簡(jiǎn)稱都是LR,但是后者我們還是俗稱Logistic多點(diǎn)
1.1 LR的介紹
線性回歸(Linear Regression)是一種用于建立自變量與連續(xù)因變量之間線性關(guān)系模型的統(tǒng)計(jì)學(xué)和機(jī)器學(xué)習(xí)方法。它是最簡(jiǎn)單、最常見的回歸分析方法之一。
線性回歸的目標(biāo)是通過擬合最優(yōu)的直線(一元線性回歸)或超平面(多元線性回歸)來描述自變量與因變量之間的關(guān)系。它假設(shè)自變量和因變量之間存在線性關(guān)系,即因變量可以被自變量的線性組合所解釋。
一元線性回歸模型的數(shù)學(xué)表達(dá)式為:Y = β0 + β1*X + ε
,其中Y是因變量,X是自變量,β0和β1是回歸系數(shù),ε是誤差項(xiàng)。這個(gè)模型描述了因變量Y與自變量X之間的直線關(guān)系,β0是截距,β1是斜率。
多元線性回歸模型擴(kuò)展了一元線性回歸,可以處理多個(gè)自變量。數(shù)學(xué)表達(dá)式為:Y = β0 + β1X1 + β2X2 + ... + βn*Xn + ε,其中Y是因變量,X1, X2, ...
, Xn是多個(gè)自變量,β0, β1, β2, …, βn是回歸系數(shù),ε是誤差項(xiàng)。
優(yōu)點(diǎn):
-
簡(jiǎn)單和解釋性: 線性回歸是一種簡(jiǎn)單直觀的方法,易于理解和解釋。它建立了自變量與因變量之間的線性關(guān)系,通過回歸系數(shù)可以解釋自變量對(duì)因變量的影響程度和方向。
-
計(jì)算效率高: 線性回歸的計(jì)算效率通常很高,特別是在具有大量樣本和低維特征空間的情況下。擬合線性回歸模型的計(jì)算復(fù)雜度較低,可以處理大規(guī)模數(shù)據(jù)集。
-
可解釋性強(qiáng): 線性回歸可以提供變量之間的關(guān)系和影響程度的定量信息。回歸系數(shù)可以量化自變量對(duì)因變量的貢獻(xiàn),幫助了解變量之間的關(guān)聯(lián)關(guān)系。
-
預(yù)測(cè)準(zhǔn)確度高: 在數(shù)據(jù)符合線性關(guān)系的情況下,線性回歸可以提供較高的預(yù)測(cè)準(zhǔn)確度。當(dāng)自變量與因變量之間存在線性關(guān)系時(shí),線性回歸可以得到較好的擬合效果。
缺點(diǎn):
-
線性假設(shè)限制: 線性回歸假設(shè)自變量和因變量之間存在線性關(guān)系,這在實(shí)際問題中并不總是成立。如果數(shù)據(jù)的真實(shí)關(guān)系是非線性的,線性回歸模型可能無法捕捉到復(fù)雜的模式和關(guān)聯(lián)。
-
對(duì)異常值敏感: 線性回歸對(duì)異常值(在因變量或自變量中的極端值)比較敏感。異常值可能對(duì)模型的擬合產(chǎn)生顯著影響,導(dǎo)致模型的不準(zhǔn)確性。
-
無法處理高維特征: 線性回歸在處理高維特征空間的問題時(shí)面臨挑戰(zhàn)。當(dāng)自變量的數(shù)量遠(yuǎn)大于樣本數(shù)量時(shí),線性回歸可能會(huì)遇到過擬合問題。
-
缺乏靈活性: 線性回歸的靈活性較低,無法捕捉復(fù)雜的非線性關(guān)系。對(duì)于非線性問題,需要采用其他更復(fù)雜的模型來提高擬合能力。
1.2 LR的應(yīng)用
這是最基礎(chǔ)的機(jī)器學(xué)習(xí)算法,應(yīng)用領(lǐng)域也十分廣泛:
-
經(jīng)濟(jì)學(xué)和金融學(xué):線性回歸可以用于預(yù)測(cè)經(jīng)濟(jì)指標(biāo)(如GDP、通貨膨脹率等)與自變量(如消費(fèi)、投資、出口等)之間的關(guān)系,進(jìn)行經(jīng)濟(jì)預(yù)測(cè)和政策分析。在金融領(lǐng)域,線性回歸可用于預(yù)測(cè)股票價(jià)格、利率等金融指標(biāo)。
-
市場(chǎng)營(yíng)銷:線性回歸可以用于市場(chǎng)營(yíng)銷研究,例如預(yù)測(cè)銷售量與廣告投入、價(jià)格等因素之間的關(guān)系,進(jìn)行市場(chǎng)需求分析和營(yíng)銷策略制定。
-
醫(yī)學(xué)和健康科學(xué):線性回歸可用于分析醫(yī)學(xué)和健康領(lǐng)域的數(shù)據(jù),例如預(yù)測(cè)疾病發(fā)展與風(fēng)險(xiǎn)因素之間的關(guān)系,評(píng)估治療方法的效果,分析生物醫(yī)學(xué)數(shù)據(jù)等。
-
社會(huì)科學(xué):線性回歸可用于社會(huì)科學(xué)領(lǐng)域的研究,如教育研究中預(yù)測(cè)學(xué)生成績(jī)與學(xué)習(xí)時(shí)間、家庭背景等因素之間的關(guān)系,社會(huì)經(jīng)濟(jì)學(xué)中分析收入與教育水平、職業(yè)等的相關(guān)性。
-
環(huán)境科學(xué):線性回歸可用于分析環(huán)境數(shù)據(jù),如預(yù)測(cè)氣溫與溫室氣體排放、大氣污染物之間的關(guān)系,評(píng)估環(huán)境因素對(duì)生態(tài)系統(tǒng)的影響。
-
工程和物理科學(xué):線性回歸可用于建立物理模型和工程設(shè)計(jì)中的預(yù)測(cè)。例如,預(yù)測(cè)材料強(qiáng)度與溫度、壓力等因素之間的關(guān)系,分析電子元件的性能與設(shè)計(jì)參數(shù)的關(guān)聯(lián)。
2. weather數(shù)據(jù)集實(shí)戰(zhàn)演示
2.1 導(dǎo)入函數(shù)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as seabornInstance
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn import metrics
%matplotlib inline
2.2 導(dǎo)入數(shù)據(jù)
weather數(shù)據(jù)集包括降水,降雪,溫度,風(fēng)速以及當(dāng)天是否包括雷暴或其他惡劣天氣條件。任務(wù)是預(yù)測(cè)以輸入特征為最低溫度的最高溫度。
下載地址:https://github.com/Vaibhav-Mehta-19/linear-regression-weather-dataset
dataset = pd.read_csv('weather.csv')
print(dataset.shape)
dataset.describe()
2.3 數(shù)據(jù)整體可視化
# 最高溫和最低溫的二維散點(diǎn)圖
dataset.plot(x='MinTemp', y='MaxTemp', style='o')
plt.title('MinTemp vs MaxTemp')
plt.xlabel('MinTemp')
plt.ylabel('MaxTemp')
plt.show()
# 檢查平均最高溫
plt.figure(figsize=(15,10))
plt.tight_layout()
seabornInstance.distplot(dataset['MaxTemp'])
根據(jù)結(jié)果看大概在15~20。
2.4 訓(xùn)練模型
X = dataset['MinTemp'].values.reshape(-1,1)
y = dataset['MaxTemp'].values.reshape(-1,1)
# 老慣例,訓(xùn)練集/測(cè)試集按7/3分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
regressor = LinearRegression()
regressor.fit(X_train, y_train)
計(jì)算截距和斜率:
print(regressor.intercept_)
print(regressor.coef_)
意味著最小溫度每變化一個(gè)單位,最高溫度的變化約為0.82
2.5 預(yù)測(cè)模型
y_pred = regressor.predict(X_test)
df = pd.DataFrame({'Actual': y_test.flatten(), 'Predicted': y_pred.flatten()})
df
# 柱狀圖可視化結(jié)果
df1 = df.head(25)
df1.plot(kind='bar',figsize=(16,10))
plt.grid(which='major', linestyle='-', linewidth='0.5', color='green')
plt.grid(which='minor', linestyle=':', linewidth='0.5', color='black')
plt.show()
這里展示了25組數(shù)據(jù),模型準(zhǔn)確性有點(diǎn)不高,但是預(yù)測(cè)的百分比還是相對(duì)接近實(shí)際百分比
# 繪制組間比較線
plt.scatter(X_test, y_test, color='gray')
plt.plot(X_test, y_pred, color='red', linewidth=2)
plt.show()
2.6 評(píng)估模型
- 平均絕對(duì)誤差(MAE),誤差絕對(duì)值的平均值:
MAE = (1/n) * Σ|i - yi|
- 均方誤差(MSE),平方誤差的平均值:
MSE = (1/n) * Σ(i - yi)^2
- 均方根誤差(RMSE),平方誤差均值的平方根:
RMSE = √(MSE)
評(píng)估模型主要是以上三個(gè)指標(biāo),用Scikit-Learn庫(kù)預(yù)構(gòu)建的函數(shù)計(jì)算即可
print('Mean Absolute Error:', metrics.mean_absolute_error(y_test, y_pred))
print('Mean Squared Error:', metrics.mean_squared_error(y_test, y_pred))
print('Root Mean Squared Error:', np.sqrt(metrics.mean_squared_error(y_test, y_pred)))
三個(gè)指標(biāo)都是越小越好,雖然有點(diǎn)差強(qiáng)人意,不過均方根誤差為4.42,平均絕對(duì)誤差為3.76,可以認(rèn)為該模型的預(yù)測(cè)誤差相對(duì)較小
3.討論
我認(rèn)為線性回歸是機(jī)器學(xué)習(xí)中最基礎(chǔ)和常見的模型之一。線性回歸模型通過建立特征與目標(biāo)變量之間的線性關(guān)系來進(jìn)行預(yù)測(cè)。它具有一些優(yōu)點(diǎn),如模型的簡(jiǎn)單性和可解釋性,使其在許多應(yīng)用領(lǐng)域得到廣泛應(yīng)用。文章來源:http://www.zghlxwxcb.cn/news/detail-775783.html
然而,線性回歸模型也有一些限制。它假設(shè)特征與目標(biāo)之間的關(guān)系是線性的,并且對(duì)異常值敏感,像2.3的散點(diǎn)圖中可以看出數(shù)據(jù)的發(fā)散性較強(qiáng)。此外,它不能捕捉到非線性關(guān)系和特征之間的復(fù)雜交互作用。對(duì)于這些情況,可能需要考慮更復(fù)雜的模型或?qū)μ卣鬟M(jìn)行轉(zhuǎn)換。文章來源地址http://www.zghlxwxcb.cn/news/detail-775783.html
到了這里,關(guān)于機(jī)器學(xué)習(xí)實(shí)戰(zhàn):Python基于LR線性回歸進(jìn)行預(yù)測(cè)(十)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!