人工智能-Python實(shí)現(xiàn)嶺回歸
1 概述
1.1 線性回歸
對于一般地線性回歸問題,參數(shù)的求解采用的是最小二乘法,其目標(biāo)函數(shù)如下:
1.2 嶺回歸
嶺回歸(ridge regression
) 是一種專用于共線性數(shù)據(jù)分析的有偏估計(jì)回歸方法。
是一種改良的最小二乘估計(jì)法,對某些數(shù)據(jù)的擬合要強(qiáng)于最小二乘法。
1.3 過擬合
圖二就是正常擬合,符合數(shù)據(jù)的趨勢,而圖三,雖然在訓(xùn)練集上擬合得很好,但是出現(xiàn)未知數(shù)據(jù)時(shí),比如Size很大時(shí),根據(jù)目前擬合來看,可能得到的結(jié)果很小,與實(shí)際誤差會很大。
2 sklearn中的嶺回歸
在sklearn庫中,可以使用sklearn.linear_model.Ridge調(diào)用嶺回歸模型,其主要參數(shù)有:
• alpha:正則化因子,對應(yīng)于損失函數(shù)中的 ??
• fit_intercept:表示是否計(jì)算截距,
• solver:設(shè)置計(jì)算參數(shù)的方法,可選參數(shù)‘auto’、‘svd’、‘sag’等。
3 案例
交通流量預(yù)測實(shí)例:
3.1 數(shù)據(jù)介紹
數(shù)據(jù)為某路口的交通流量監(jiān)測數(shù)據(jù),記錄全年小時(shí)級別的車流量。
3.2 實(shí)驗(yàn)?zāi)康?/h3>
根據(jù)已有的數(shù)據(jù)創(chuàng)建多項(xiàng)式特征,使用嶺回歸模型代替一般的線性模型,對 車流量 的信息進(jìn)行 多項(xiàng)式回歸 。
3.3 數(shù)據(jù)特征如下
HR
:一天中的第幾個小時(shí)(0-23)WEEK_DAY
:一周中的第幾天(0-6)DAY_OF_YEAR
:一年中的第幾天(1-365)WEEK_OF_YEAR
:一年中的第幾周(1-53)TRAFFIC_COUNT
:交通流量
全部數(shù)據(jù)集包含2萬條以上數(shù)據(jù)(21626)
4 Python實(shí)現(xiàn)
4.1 代碼
#*================1. 建立工程,導(dǎo)入sklearn相關(guān)工具包====================** import numpy as np from sklearn.linear_model import Ridge ? #通過sklearn.linermodel加載嶺回歸方法 from sklearn import model_selection ? ? #加載交叉驗(yàn)證模塊 import matplotlib.pyplot as plt ? ? ?#加載matplotilib模塊 from sklearn.preprocessing import PolynomialFeatures ? ? #通過加載用于創(chuàng)建多項(xiàng)式特征,如ab、a2、b2 ? #*=================2. 數(shù)據(jù)加載=========================================** data=np.genfromtxt('嶺回歸.csv',delimiter=',') ? ? #使用numpy的方法從csv文件中加載數(shù)據(jù) print(data) print(data.shape) plt.plot(data[:,4]) ? ? ? ? ? ? ? ?#使用plt展示車流量信息 #plt.show() #*================3. 數(shù)據(jù)處理==========================================** X=data[:,:4] ? ? ? ? ? ? ? ? ?#X用于保存0-3維數(shù)據(jù),即屬性 y=data[:,4] ? ? ? ? ? ? ? ? ? ##y用于保存第4維數(shù)據(jù),即車流量 poly=PolynomialFeatures(6) ? ?#用于創(chuàng)建最高次數(shù)6次方的的多項(xiàng)式特征,多次試驗(yàn)后決定采用6次 X=poly.fit_transform(X) ? ? ? #X為創(chuàng)建的多項(xiàng)式特征 ? #*================4. 劃分訓(xùn)練集和測試集=================================** train_set_x, test_set_x , train_set_y, test_set_y =model_selection.train_test_split(X,y,test_size=0.3, random_state=0) #將所有數(shù)據(jù)劃分為訓(xùn)練集和測試集,test_size表示測試集的比例, # #random_state是隨機(jī)數(shù)種子 ? #*==============5. 創(chuàng)建回歸器,并進(jìn)行訓(xùn)練===============================** clf=Ridge(alpha=1.0,fit_intercept = True) #接下來我們創(chuàng)建嶺回歸實(shí)例 clf.fit(train_set_x,train_set_y) #調(diào)用fit函數(shù)使用訓(xùn)練集訓(xùn)練回歸器 clf.score(test_set_x,test_set_y) #利用測試集計(jì)算回歸曲線的擬合優(yōu)度,clf.score返回值為0.7375 #擬合優(yōu)度,用于評價(jià)擬合好壞,最大為1,無最小值,當(dāng)對所有輸入都輸出同一個值時(shí),擬合優(yōu)度為0。 ? #*============6. 畫出擬合曲線=========================================** start=100 ? ? ? ? ? ? ? ? ? ? ?#接下來我們畫一段200到300范圍內(nèi)的擬合曲線 end=200 y_pre=clf.predict(X) ? ? ? ? ? #是調(diào)用predict函數(shù)的擬合值 time=np.arange(start,end) plt.plot(time,y[start:end],'b', label="real") plt.plot(time,y_pre[start:end],'r', label='predict') ? #展示真實(shí)數(shù)據(jù)(藍(lán)色)以及擬合的曲線(紅色) plt.legend(loc='upper left') #設(shè)置圖例的位置 plt.show()
4.2 結(jié)果
到此這篇關(guān)于人工智能-Python實(shí)現(xiàn)嶺回歸的文章就介紹到這了,更多相關(guān)Python實(shí)現(xiàn)嶺回歸內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用python統(tǒng)計(jì)代碼行的示例(包括空行和注釋)
今天小編就為大家分享一篇用python統(tǒng)計(jì)代碼行的示例(包括空行和注釋),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07使用Pytorch Geometric進(jìn)行鏈接預(yù)測的實(shí)現(xiàn)代碼
PyTorch Geometric (PyG)是構(gòu)建圖神經(jīng)網(wǎng)絡(luò)模型和實(shí)驗(yàn)各種圖卷積的主要工具,在本文中我們將通過鏈接預(yù)測來對其進(jìn)行介紹,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2023-10-10Python自動采集微信聯(lián)系人的實(shí)現(xiàn)示例
這篇文章主要介紹了Python自動采集微信聯(lián)系人的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02python深度學(xué)習(xí)tensorflow1.0參數(shù)和特征提取
這篇文章主要為大家介紹了python深度學(xué)習(xí)tensorflow1.0參數(shù)和特征提取,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06win10下tensorflow和matplotlib安裝教程
這篇文章主要為大家詳細(xì)介紹了win10下tensorflow和matplotlib安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09