怎么用python进行回归预测_使用Python训练回归模型并进行预测
摘要:本篇文章將介紹在python中使用機(jī)器學(xué)習(xí)庫sklearn建立簡單回歸模型的過程。
回歸分析是一種常見的統(tǒng)計(jì)方法,用于確定不同變量間的相互關(guān)系。在Excel中可以通過數(shù)據(jù)分析菜單中的回歸功能快速完成。本篇文章將介紹在python中使用機(jī)器學(xué)習(xí)庫sklearn建立簡單回歸模型的過程。
準(zhǔn)備工作
首先是開始前的準(zhǔn)備工作,在創(chuàng)建回歸模型的過程中我們需要使用以下幾個(gè)庫文件,他們分別為sklearn庫,numpy庫,pandas庫和matplotlib庫。sklearn庫用于計(jì)算線性回歸模型中的關(guān)鍵參數(shù),并對模型進(jìn)行檢驗(yàn)。numpy和pandas庫用于數(shù)據(jù)導(dǎo)入,創(chuàng)建數(shù)據(jù)表和一些基礎(chǔ)的計(jì)算工作。matplotlib庫用于繪制散點(diǎn)圖。
#導(dǎo)入機(jī)器學(xué)習(xí)linear_model庫 from sklearn import linear_model #導(dǎo)入交叉驗(yàn)證庫 from sklearn import cross_validation #導(dǎo)入數(shù)值計(jì)算庫 import numpy as np #導(dǎo)入科學(xué)計(jì)算庫 import pandas as pd #導(dǎo)入圖表庫 import matplotlib.pyplot as plt 讀取并查看數(shù)據(jù)表
準(zhǔn)備工作完成后,開始讀取數(shù)據(jù),這里我們使用了一組每日廣告成本和點(diǎn)擊量的數(shù)據(jù)。將這組數(shù)據(jù)讀取到python中并取名為cost_and_click。通過head函數(shù)查看數(shù)據(jù)表中前5行的內(nèi)容。以下是數(shù)據(jù)讀取和查看的代碼和結(jié)果。
#讀取數(shù)據(jù)并創(chuàng)建數(shù)據(jù)表,名稱為cost_and_click cost_and_click=pd.DataFrame(pd.read_excel(cost_and_click.xlsx))
#查看數(shù)據(jù)表前5行的內(nèi)容 cost_and_click.head()
設(shè)置模型的自變量和因變量
在cost_and_click數(shù)據(jù)表中,我們將廣告成本cost設(shè)置為自變量X,將廣告點(diǎn)擊量click設(shè)置為因變量Y。希望通過回歸模型發(fā)現(xiàn)廣告成本對于廣告點(diǎn)擊量的影響,以及兩者間的關(guān)系。下面我們將X設(shè)置為cost,Y設(shè)置為click。并通過shape函數(shù)查看了兩個(gè)變量的行數(shù),共25行,這是我們完整數(shù)據(jù)表的行數(shù)。
#將廣告成本設(shè)為自變量X X = np.array(cost_and_click[[cost]]) #將點(diǎn)擊量設(shè)為因變量Y Y = np.array(cost_and_click[click]) #查看自變量和因變量的行數(shù) X.shape,Y.shape
繪制散點(diǎn)圖
在設(shè)置好自變量X和因變量Y后,為了更清楚的看到兩者間的關(guān)系,我們先使用散點(diǎn)圖進(jìn)行觀察,下面是散點(diǎn)圖的繪制過程,其中X軸為廣告成本數(shù)據(jù),Y軸為廣告點(diǎn)擊量數(shù)據(jù)。
#設(shè)置圖表字體為華文細(xì)黑,字號15 plt.rc(font, family=STXihei, size=15) #繪制散點(diǎn)圖,廣告成本X,點(diǎn)擊量Y,設(shè)置顏色,標(biāo)記點(diǎn)樣式和透明度等參數(shù) plt.scatter(X,Y,60,color=blue,marker=o,linewidth=3,alpha=0.8) #添加x軸標(biāo)題 plt.xlabel(成本) #添加y軸標(biāo)題 plt.ylabel(點(diǎn)擊量) #添加圖表標(biāo)題 plt.title(廣告成本與點(diǎn)擊量分析) #設(shè)置背景網(wǎng)格線顏色,樣式,尺寸和透明度 plt.grid(color=#95a5a6,linestyle=--, linewidth=1,axis=both,alpha=0.4) #顯示圖表 plt.show()
從散點(diǎn)圖中可以看出廣告點(diǎn)擊量隨著廣告成本的增加而提升。兩者究竟有多強(qiáng)的聯(lián)系,以及具體的關(guān)系如何,我們需要從回歸模型中找到答案。
將數(shù)據(jù)分割為訓(xùn)練集和測試集
原始數(shù)據(jù)中我們共記錄到25天的廣告成本和點(diǎn)擊量數(shù)據(jù)。將這25條數(shù)據(jù)分為兩部分,一部分作為訓(xùn)練集創(chuàng)建回歸模型,另一部分作為測試集對回歸模型的結(jié)果進(jìn)行檢驗(yàn)。下面是具體的數(shù)據(jù)分組代碼,使用隨機(jī)方式從25條記錄中抽取40%作為測試集,另外60%作為訓(xùn)練集數(shù)據(jù)。
#將原始數(shù)據(jù)通過隨機(jī)方式分割為訓(xùn)練集和測試集,其中測試集占比為40% X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, Y, test_size=0.4, random_state=0)
使用shape函數(shù)對訓(xùn)練集的數(shù)據(jù)行數(shù)進(jìn)行查看,共有15行。這15行數(shù)據(jù)將被用于建立回歸模型。
#查看訓(xùn)練集數(shù)據(jù)的行數(shù) X_train.shape,y_train.shape
代入線性回歸模型
將訓(xùn)練集數(shù)據(jù)代入到線性回歸模型中,以計(jì)算關(guān)鍵的參數(shù)值。下面是具體的代碼和結(jié)果。
#將訓(xùn)練集代入到線性回歸模型中 clf = linear_model.LinearRegression() clf.fit (X_train,y_train)
計(jì)算模型的關(guān)鍵參數(shù)
回歸模型依據(jù)自變量的數(shù)量可以分為一元回歸模型和多元回歸模型,這里我們只有一個(gè)自變量X,因此是一元回歸模型。其中斜率b1和截距b0是我們要求的關(guān)鍵參數(shù)值。
首先計(jì)算出回歸模型中的斜率值,以下是具體的代碼和結(jié)果。
#線性回歸模型的斜率 clf.coef_
其次計(jì)算出回歸模型的截距,以下是具體的代碼和結(jié)果。
#線性回歸模型的截距 clf.intercept_
除此之外,對于回歸模型來說還需要計(jì)算判定系數(shù),也就是R平方,用以說明自變量對因變量變化的解釋度。以下是具體的代碼和計(jì)算結(jié)果。
#判定系數(shù)R Square clf.score(X_train,y_train)
有了前面的斜率和截距后,就可以描繪出廣告成本與廣告點(diǎn)擊量之間的關(guān)系了,并且可以通過這種關(guān)系來對廣告點(diǎn)擊量的結(jié)果進(jìn)行預(yù)測,下面我們在回歸模型中將廣告成本設(shè)置為20000元,經(jīng)過計(jì)算獲得預(yù)測的廣告點(diǎn)擊量為1993次。這個(gè)預(yù)測結(jié)果準(zhǔn)確嗎?我們還需要對回歸模型進(jìn)行評估。
#輸入自變量預(yù)測因變量 clf.predict(20000)
使用測試集評估模型
評估回歸模型的方法就是使用測試集數(shù)據(jù),將測試集中的自變量代入到回歸模型中,將結(jié)果與測試集的因變量進(jìn)行對比,評估模型的準(zhǔn)確性。下面我們將測試集中的自變量代入回歸模型,并列出了所有的計(jì)算結(jié)果。
#將測試集的自變量代入到模型預(yù)測因變量 list(clf.predict(X_test))
同時(shí)我們也列出了測試集中因變量。通過對比可以看到兩組數(shù)據(jù)間的差異,例如第一組數(shù)據(jù)回歸模型的計(jì)算結(jié)果796,測試集中的因變量736。以及第三組數(shù)據(jù)908和991。有些數(shù)據(jù)回歸模型的結(jié)果大于測試集的數(shù)據(jù),而另一些則可能小于測試集的數(shù)據(jù)。
#顯示測試集的因變量 list(y_test)
為了衡量回歸模型的計(jì)算結(jié)果與測試集中因變量的數(shù)據(jù)差異,我們使用誤差平方和對兩者的差異進(jìn)行評估。以下是誤差平方和的計(jì)算公式。為了防止兩組數(shù)據(jù)間差異的正負(fù)相互抵消,取平方和。
這里需要說明的是誤差平方和指標(biāo)并不能說明回歸模型的結(jié)果與測試集數(shù)據(jù)間的差異大小,它只能用來進(jìn)行模型間準(zhǔn)確率的對比。以下是計(jì)算誤差平方和的代碼和結(jié)果。
總結(jié)
以上是生活随笔為你收集整理的怎么用python进行回归预测_使用Python训练回归模型并进行预测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: RTX5 | 时间延时
- 下一篇: linux系统可以ping,Linux系
