這篇文章將為大家詳細(xì)講解有關(guān)Python中線性回歸的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)公司主要從事成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)長治,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):189820811081)線性回歸的基本概念
線性回歸是一種有監(jiān)督的學(xué)習(xí)算法,它介紹的自變量的和因變量的之間的線性的相關(guān)關(guān)系,分為一元線性回歸和多元的線性回歸。一元線性回歸是一個自變量和一個因變量間的回歸,可以看成是多遠(yuǎn)線性回歸的特例。線性回歸可以用來預(yù)測和分類,從回歸方程可以看出自變量和因變量的相互影響關(guān)系。
線性回歸模型如下:
對于線性回歸的模型假定如下:
(1) 誤差項(xiàng)的均值為0,且誤差項(xiàng)與解釋變量之間線性無關(guān)
(2) 誤差項(xiàng)是獨(dú)立同分布的,即每個誤差項(xiàng)之間相互獨(dú)立且每個誤差項(xiàng)的方差是相等的。
(3) 解釋變量之間線性無關(guān)
(4) 正態(tài)性假設(shè),即誤差項(xiàng)是服從正態(tài)分布的
以上的假設(shè)是建立回歸模型的基本條件,所以對于回歸結(jié)果要進(jìn)行一一驗(yàn)證,如果不滿足假定,就要進(jìn)行相關(guān)的修正。
2) 模型的參數(shù)求解
(1)矩估計(jì)
一般是通過樣本矩來估計(jì)總體的參數(shù),常見是樣本的一階原點(diǎn)矩來估計(jì)總體的均值,二階中心矩來估計(jì)總體的方差。
(2)最小二乘估計(jì)
一般最小二乘估計(jì)是適用于因變量是連續(xù)型的變量,最常用的是普通最小二乘法( Ordinary Least Square,OLS),它的原理是所選擇的回歸模型應(yīng)該使所有觀察值的殘差平方和達(dá)到最小。預(yù)測值用 表示,對應(yīng)的實(shí)際值 ,殘差平方和 ,最小二乘估計(jì)是求得參數(shù)的值,使得L最小。對于線性回歸求得的參數(shù)值是唯一的。
(3)極大似然估計(jì)
極大似然估計(jì)是基于概率的思想,它要求樣本的概率分布是已知的,參數(shù)估計(jì)的值是使得大量樣本發(fā)生的概率大,用似然函數(shù)來度量,似然函數(shù)是各個樣本的密度函數(shù)的乘積,為方便求解對其求對數(shù),加負(fù)號求解極小值,得到參數(shù)的估計(jì)結(jié)果。
3)模型的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):結(jié)果易于理解,計(jì)算上不復(fù)雜
缺點(diǎn):對于非線性的數(shù)據(jù)擬合不好
數(shù)據(jù)來源于網(wǎng)絡(luò)爬蟲,武漢市商品房價(jià)格為因變量和幾個相關(guān)關(guān)鍵詞的百度指數(shù)的搜索量為自變量。
由于本文的自變量有98個,首先進(jìn)行自變量的選擇,先是通過相關(guān)系數(shù)矩陣篩選掉不相關(guān)的變量,根據(jù)Pearson相關(guān)系數(shù)矩陣進(jìn)行變量的選取,一般選取相關(guān)系數(shù)的值大于0.3的變量進(jìn)行回歸分析,由于本文的變量較多,先進(jìn)行手動篩選然后利用相關(guān)系數(shù)進(jìn)行選取,本文選取相關(guān)系數(shù)大于0.55的變量進(jìn)行回歸分析。
經(jīng)過相關(guān)系數(shù)的分析選取8個變量進(jìn)行下一步的分析,分析的Python代碼如下:
# -*- coding: utf-8 -*- #### Required Packages import sys reload(sys) sys.setdefaultencoding('utf-8') import matplotlib.pyplot as plt import numpy as np import pandas as pd import statsmodels.api as sm data = pd.read_csv('Hdata.csv') print data dataset = np.array(data) ######相關(guān)性分析 X = dataset[:,1:98] y = dataset[:,0] cor = np.corrcoef(dataset,rowvar=0)[:,0] ######輸出相關(guān)矩陣的第一列 print cor #######篩選后的數(shù)據(jù)讀取 data1 = pd.read_csv('H1data.csv') dataset1 = np.array(data) ######篩選后的變量###### X1 = dataset1[:,1:8] Y1 = dataset1[:,0] est = sm.OLS(Y1,X1).fit() print est.summary()
貼出線性回歸的結(jié)果如下:
OLS RegressionResults ======================================================================= Dep. Variable: y R-squared: 0.978 Model: OLS Adj. R-squared: 0.974 Method: Least Squares F-statistic: 287.5 Date: Sat, 08 Apr 2017 Prob (F-statistic): 9.35e-36 Time: 15:15:14 Log-Likelihood: -442.82 No. Observations: 53 AIC: 899.6 Df Residuals: 46 BIC: 913.4 Df Model: 7 Covariance Type: nonrobust ======================================================================= coef std err t P>|t| [95.0% Conf. Int.] ----------------------------------------------------------------------- x1 -0.3691 0.494 -0.747 0.0459 -1.364 0.626 x2 0.3249 0.353 0.920 0.0362 -0.386 1.036 x3 1.0987 0.837 1.312 0.0196 -0.587 2.784 x4 0.7613 0.790 0.964 0.0340 -0.829 2.351 x5 -1.5766 1.099 -1.435 0.0158 -3.789 0.636 x6 -0.1572 1.077 -0.146 0.0885 -2.325 2.011 x7 3.2003 1.603 1.997 0.052 -0.026 6.427 ======================================================================= Omnibus: 0.413 Durbin-Watson: 1.748 Prob(Omnibus): 0.814 Jarque-Bera (JB): 0.100 Skew: 0.097 Prob(JB): 0.951 Kurtosis: 3.089 Cond. No. 95.5 =======================================================================
從回歸分析的結(jié)果可以看出來,模型的擬合優(yōu)度R-squared=0.978,說明模型的擬合效果很好,據(jù)其大小對擬合效果的優(yōu)劣性進(jìn)行判定。對模型整體的顯著性可以通過F統(tǒng)計(jì)量來看,結(jié)果顯示的F統(tǒng)計(jì)量對應(yīng)的P值顯著小于0.05(0.05是顯著性水平,也可以選取0.01),說明模型整體是顯著的,它的顯著性說明被解釋變量能不能由這些解釋變量進(jìn)行解釋,F(xiàn)檢驗(yàn)是對整體的檢驗(yàn),F(xiàn)檢驗(yàn)的通過不代表每一個解釋變量是顯著的。對每一個變量的顯著性要看t檢驗(yàn)統(tǒng)計(jì)量的值,t檢驗(yàn)統(tǒng)計(jì)量對應(yīng)的P值小于0.05(0.01或者0.1也行,具體看情況分析,一般選取0.05)視為是顯著的,從結(jié)果可以看出,X6和X7的變量的p是大于0.05的,也就是這兩個變量對被解釋變量的影響是不顯著的要剔除。但是如果你只是關(guān)心預(yù)測的問題那么可以不剔除。但是如果有研究解釋變量對被解釋變量的影響的程度的,要做進(jìn)一步的研究。接下來看DW的值,DW的值為1.748,說明模型不存在自相關(guān)性。看JB檢驗(yàn)統(tǒng)計(jì)量的值,JB檢驗(yàn)統(tǒng)計(jì)量是對正態(tài)性的假設(shè)進(jìn)行檢驗(yàn)的,JB的值對應(yīng)的p值為0.951顯著大于0.05,可以認(rèn)為模型滿足正態(tài)性的假設(shè)的。對于參數(shù)的實(shí)際意義本文就不做解釋了。
對于DW值判斷相關(guān)性的依據(jù)如下:
DW=0時,殘差序列存在完全正自相關(guān),
DW=(0,2)時,殘差序列存在正自相關(guān),
DW=2時,殘差序列無自相關(guān),
DW=(2,4)時,殘差序列存在負(fù)自相關(guān),
DW=4時,殘差序列存在完全負(fù)自相關(guān)。
對于建立模型的一般步驟簡單描述如下:
(1) 根據(jù)數(shù)據(jù)的表現(xiàn)形式選取合適的模型
(2) 對選取的模型選取適用的參數(shù)估計(jì)方法
(3) 對參數(shù)的結(jié)果進(jìn)行檢驗(yàn)
(4) 對結(jié)果進(jìn)行解釋
關(guān)于“Python中線性回歸的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。