大家好,線性回歸是確定兩種或兩種以上變量之間互相依賴的定量關(guān)系的一種統(tǒng)計(jì)分析方法。根據(jù)自變量的個(gè)數(shù),可以將線性回歸分為一元線性回歸和多元線性回歸分析。
一元線性回歸:就是只包含一個(gè)自變量,且該自變量與因變量之間的關(guān)系是線性關(guān)系。例如通過(guò)廣告費(fèi)這一個(gè)自變量來(lái)預(yù)測(cè)銷(xiāo)量,就屬于一元線性回歸分析。
多元線性回歸:如果回歸分析包含兩個(gè)或以上的自變量,且每個(gè)因變量與自變量之間都是線性關(guān)系,則稱為多元線性回歸分析;例如通過(guò)肥料、灌溉等人工成本來(lái)預(yù)測(cè)產(chǎn)量,就屬于多元線性回歸。
一、線性回歸分析的思路
-
確定因變量與自變量。比如通過(guò)人工成本費(fèi)進(jìn)行產(chǎn)量預(yù)測(cè)時(shí),人工成本費(fèi)是自變量,產(chǎn)量是因變量。
-
確定線性回歸分析的類(lèi)型。例如在一元線性回歸分析中,只需要確定自變量與因變量的相關(guān)度為強(qiáng)相關(guān)性,即可建立一元線性回歸方程,從而確定線性回歸分析的類(lèi)型為一元線性回歸。
-
建立線性回歸分析模型。
-
檢驗(yàn)線性回歸分析模型的擬合程度。為了判斷線性回歸分析模型是否可用于實(shí)際檢測(cè),需要檢驗(yàn)線性回歸分析模型的擬合程度,也就是對(duì)模型進(jìn)行評(píng)估,主要以這三個(gè)值作為評(píng)估標(biāo)準(zhǔn):(R-squared統(tǒng)計(jì)學(xué)中的)、Adj.R-squared(即Adiustd )、P值;其中前兩個(gè)用來(lái)衡量線性擬合的擬合程度,P值用來(lái)衡量特征變量的顯著性。
-
利用線性回歸分析模型進(jìn)行預(yù)測(cè)。如果擬合出來(lái)的回歸分析模型的擬合度符合要求,就可以使用該模型以及計(jì)算出的系數(shù)a和b得到回歸方程,從而根據(jù)已有的自變量數(shù)據(jù)來(lái)預(yù)測(cè)需要的因變量結(jié)果。
二、一元線性回歸分析

那我們初中學(xué)過(guò)的一元一次方程y=ax+b來(lái)說(shuō):就是最簡(jiǎn)單的一元線性回歸,接下來(lái),我們以上圖數(shù)據(jù)為例,假設(shè)當(dāng)人工成本為6600元時(shí),產(chǎn)量為多少?我們下面就這一實(shí)際生產(chǎn)問(wèn)題問(wèn)題進(jìn)行一元線性回歸分析代碼演示。
確定因變量與自變量:
import pandas as pd
data= pd.read_excel('D:/shujufenxi/作物表型記錄本.xlsx',sheet_name=0,index_col='序號(hào)')
print(data.head())

我們要進(jìn)行的是根據(jù)已知的6600人工成本預(yù)測(cè)產(chǎn)量,由此可知,人工成本費(fèi)為自變量,產(chǎn)量為因變量。
確定線性回歸分析的類(lèi)型:
import pandas as pd
data= pd.read_excel('D:/shujufenxi/作物表型記錄本.xlsx',sheet_name=0,index_col='序號(hào)')
print(data.head())
# 選中自變量與因變量的數(shù)據(jù),x為自變量,y為因變量
x=data[['人工成本費(fèi)(元)']]
y=data[['產(chǎn)量(公斤)']]
# 確定線性回歸分析的類(lèi)型
corr=data.corr()
print(corr)

可以看到人工成本與產(chǎn)量之間的相關(guān)系數(shù)為0.965321,為強(qiáng)相關(guān),隨后利用Matplotlib模塊進(jìn)行繪制散點(diǎn)圖,代碼如下:
# 繪制散點(diǎn)圖
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.scatter(x,y)
plt.xlabel('人工成本費(fèi)(元)')
plt.ylabel('產(chǎn)量(公斤)')
plt.show()

建立回歸分析模型以及檢驗(yàn)線性回歸分析模型的擬合程度:
#建立回歸分析模型
from sklearn.linear_model import LinearRegression # 需下載Scikit-Learn模塊,使用LinearRegression()函數(shù)建立線性回歸分析模型
Model=LinearRegression()
Model.fit(x,y)
#檢驗(yàn)線性回歸分析模型的擬合程度
score=Model.score(x,y)
print(score)
plt.scatter(x,y)
plt.plot(x,Model.predict(x))
plt.xlabel('人工成本費(fèi)(元)')
plt.ylabel('產(chǎn)量(公斤)')
plt.show()

可以看出模型的評(píng)分約為0.93,很接近1,擬合程度還是較高的。

可以看出大多數(shù)散點(diǎn)還是比較靠近這條直線的,說(shuō)明模型很好的捕捉到了數(shù)據(jù)特征,可以算是恰當(dāng)擬合。
利用線性回歸分析進(jìn)行預(yù)測(cè):
# 預(yù)測(cè),也可以進(jìn)行同時(shí)預(yù)測(cè)多個(gè),如下
y=Model.predict([[6600],[15000],[8888]])
print(y)

三、多元線性回歸分析

下面我們利用此虛擬數(shù)據(jù)假設(shè)當(dāng)農(nóng)藥成本費(fèi)、肥料成本費(fèi)、田間管理成本費(fèi)分別為3400、2900、3100時(shí)的產(chǎn)量為多少,下面我們將進(jìn)行完整代碼演示:
## 確定自變量與因變量
import pandas as pd
data= pd.read_excel('D:/shujufenxi/作物表型記錄本.xlsx',sheet_name=1,index_col='序號(hào)')
print(data.head())
# 選中自變量與因變量的數(shù)據(jù),x為自變量,y為因變量
x=data[['農(nóng)藥成本費(fèi)(元)','肥料成本費(fèi)(元)','田間管理成本費(fèi)(元)']]
y=data[['產(chǎn)量(公斤)']]
# 確定線性回歸分析的類(lèi)型——圖3
corr=data.corr()
print(corr)
# 繪制散點(diǎn)圖——圖1
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
sns.pairplot(data,x_vars=['農(nóng)藥成本費(fèi)(元)','肥料成本費(fèi)(元)','田間管理成本費(fèi)(元)'],y_vars='產(chǎn)量(公斤)')
plt.show()
#建立回歸分析模型
from sklearn.linear_model import LinearRegression # 需下載Scikit-Learn模塊,使用LinearRegression()函數(shù)建立線性回歸分析模型
Model=LinearRegression()
Model.fit(x,y)
#檢驗(yàn)線性回歸分析模型的擬合程度——圖3
score=Model.score(x,y)
print(score)
# 繪制擬合成果圖——圖2
sns.pairplot(data,x_vars=['農(nóng)藥成本費(fèi)(元)','肥料成本費(fèi)(元)','田間管理成本費(fèi)(元)'],y_vars='產(chǎn)量(公斤)',kind='reg')# kind參數(shù)可添加一條最佳擬合直線和95%的置信帶,從而更直觀的展示模型的擬合程度
plt.show()
# 預(yù)測(cè),也可以進(jìn)行同時(shí)預(yù)測(cè)多個(gè),如下——圖3
y=Model.predict([[3400,2900,3100]])
print(y)



以上就是根據(jù)此數(shù)據(jù)所進(jìn)行的多元線性回歸分析以及模型預(yù)測(cè);在上面第二個(gè)圖中,我們從置信帶的寬度來(lái)看,農(nóng)藥成本費(fèi)與產(chǎn)量的線性關(guān)系較強(qiáng),肥料成本費(fèi)、田間管理成本費(fèi)兩者與產(chǎn)量的線性關(guān)系則較弱。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-409903.html
本文所講對(duì)模型進(jìn)行擬合在實(shí)際生產(chǎn)中具有重大意義,不僅可以利用已知變量預(yù)測(cè)未知變量,還能根據(jù)擬合結(jié)果判斷所得數(shù)據(jù)是否具有生產(chǎn)意義。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-409903.html
到了這里,關(guān)于使用Python進(jìn)行數(shù)據(jù)分析——線性回歸分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!