機(jī)器學(xué)習(xí)筆記之線性回歸技術(shù)

一、概念

站在用戶的角度思考問題,與客戶深入溝通,找到羅江網(wǎng)站設(shè)計(jì)與羅江網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國(guó)際域名空間、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋羅江地區(qū)。

線性回歸是一種有監(jiān)督的回歸分析技術(shù),其是找出自變量與因變量之間的因果關(guān)系,本質(zhì)上是一個(gè)函數(shù)估計(jì)的問題?;貧w分析的因變量應(yīng)該是連續(xù)變量,若因變量為離散變量,則問題就轉(zhuǎn)化為分類問題?;貧w分析主要應(yīng)用場(chǎng)景為預(yù)測(cè),常用的算法有如下:線性回歸、二項(xiàng)式回歸、嶺回歸、Lasso等。

二、模型的表達(dá)式及推導(dǎo)

機(jī)器學(xué)習(xí)筆記之 線性回歸技術(shù)

本文主要介紹線性回歸的一般推導(dǎo),后續(xù)會(huì)推出采用梯度下降法求上述解的過程。

代碼實(shí)例

本文在實(shí)現(xiàn)線性回歸的技術(shù)時(shí),為了作為對(duì)比,采用了多種回歸算法技術(shù),如普通線性回歸,貝葉斯回歸,SVM,集成算法等,這樣對(duì)于算法的選擇有一個(gè)比較。下面來(lái)看具體代碼實(shí)現(xiàn):

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt #導(dǎo)入圖形展示庫(kù)

from sklearn.linear_model import BayesianRidge,LinearRegression,ElasticNet #批量導(dǎo)入要實(shí)現(xiàn)的回歸算法

from sklearn.svm import SVR #SVM中的回歸算法

from sklearn.ensemble.gradient_boosting import GradientBoostingRegressor #集成算法

from sklearn.model_selection import cross_val_score #交叉檢驗(yàn)

from sklearn.metrics import explained_variance_score,mean_absolute_error,mean_squared_error,r2_score #批量導(dǎo)入指標(biāo)算法

raw_data=np.loadtxt('D:\\data\\regression.txt')

x=raw_data[:,:-1] #分隔自變量

y=raw_data[:,-1] #分隔因變量

#訓(xùn)練回歸模型無(wú)錫婦科檢查醫(yī)院 http://www.87554006.com/

n_folds=6 #設(shè)置交叉檢驗(yàn)的次數(shù)

model_br=BayesianRidge() #建立貝葉斯嶺回歸模型對(duì)象

model_lr=LinearRegression() #建立普通線性回歸模型對(duì)象

model_etc=ElasticNet() #建立彈性網(wǎng)絡(luò)回歸模型

model_svr=SVR() #建立支持向量機(jī)回歸模型

model_gbr=GradientBoostingRegressor() #建立梯度增強(qiáng)回歸模型對(duì)象

model_names=['BayesianRidge','LinearRegression','ElasticNet','SVR','GBR'] #不同模型的名稱列表

model_dic=[model_br,model_lr,model_etc,model_svr,model_gbr] #不同模型對(duì)象名稱的列表

cv_score_list=[] #交叉驗(yàn)證結(jié)果列表

pre_y_list=[] #各個(gè)回歸模型預(yù)測(cè)的y值列表

for model in model_dic: #讀出每個(gè)回歸模型對(duì)象

scores=cross_val_score(model,x,y,cv=n_folds) #將每個(gè)回歸模型導(dǎo)入交叉檢驗(yàn)?zāi)P椭凶鲇?xùn)練檢驗(yàn)

cv_score_list.append(scores) #將交叉驗(yàn)證結(jié)果存入到結(jié)果列表

pre_y_list.append(model.fit(x,y).predict(x)) #將回歸訓(xùn)練中得到的預(yù)測(cè)y存入到列表

#模型效果指標(biāo)評(píng)估

n_samples,n_features=x.shape #總樣本量,總特征數(shù)

model_metrics_name=[explained_variance_score,mean_absolute_error,mean_squared_error,r2_score] #回歸評(píng)估指標(biāo)對(duì)象集

model_metrics_list=[] #回歸評(píng)估指標(biāo)列表

for i in range(5): #循環(huán)每個(gè)模型索引

tmp_list=[] #每個(gè)內(nèi)循環(huán)的臨時(shí)結(jié)果列表

for m in model_metrics_name: #循環(huán)每個(gè)指標(biāo)對(duì)象

tmp_score=m(y,pre_y_list[i]) #計(jì)算每個(gè)回歸指標(biāo)結(jié)果

tmp_list.append(tmp_score) #將結(jié)果存入每個(gè)內(nèi)循環(huán)的臨時(shí)結(jié)果列表

model_metrics_list.append(tmp_list) #將結(jié)果存入到回歸評(píng)估指標(biāo)列表

df1=pd.DataFrame(cv_score_list,index=model_names) #建立交叉驗(yàn)證的數(shù)據(jù)框

df2=pd.DataFrame(model_metrics_list,index=model_names,columns=['ev','mae','mse','r2']) #建立回歸指標(biāo)的數(shù)據(jù)框

print ('samples:%d\t features:%d' % (n_samples,n_features)) #打印輸出樣本量和特征數(shù)量

print (90*'-') #打印分隔線

print ('cross validation result:') #打印輸出標(biāo)題

print (df1) #打印輸出交叉檢驗(yàn)的數(shù)據(jù)框

print (90*'-') #打印輸出分隔線

print ('regression metrics:') #打印輸出標(biāo)題

print (df2) #打印輸出回歸指標(biāo)的數(shù)據(jù)框

print (90*'-') #打印輸出分隔線

print ('short name \t full name') #打印輸出縮寫和全名標(biāo)題

print ('ev \t explained_variance')

print ('mae \t mean_absolute_error')

print ('mse \t mean_squared_error')

print ('r2 \t r2')

print (90*'-') #打印輸出分隔線

運(yùn)行結(jié)果

------------------------------------------------------------------------------------------

指標(biāo)解釋:

從上圖中可以看出:增強(qiáng)梯度(GBR)回歸效果是所有模型中回歸效果最好的,從回歸矩陣(regression metrics)中看出其方差解釋ev達(dá)到了0.975,并且其平均絕對(duì)誤差和均方差都是最低的,分別為1.152、2.100。從交叉驗(yàn)證的結(jié)果可以看出,GBR在交叉驗(yàn)證的6次驗(yàn)證中,其結(jié)果的穩(wěn)定性相對(duì)較高,這證明該算法在應(yīng)對(duì)不同的數(shù)據(jù)時(shí)穩(wěn)定效果較好。

模型效果的可視化

模型擬合好以后,可以將幾種回歸效果借助matplotlib進(jìn)行展示。代碼如下:

#模型效果的可視化

plt.figure #創(chuàng)建畫布

plt.plot(np.arange(x.shape[0]),y,color='k',label='true y') #畫出原始值得曲線

color_list=['r','b','g','y','c'] #顏色列表

linesytle_list=['-','.','o','v','*'] #樣式列表

for i,pre_y in enumerate(pre_y_list):

plt.plot(np.arange(x.shape[0]),pre_y_list[i],color_list[i],label=model_names[i]) #畫出每條預(yù)測(cè)結(jié)果線

plt.title('regression result comparison') #標(biāo)題

plt.legend(loc='upper right') #圖例位置

plt.ylabel('real and predicted value') #y軸標(biāo)題

plt.show() #展示圖像

文章名稱:機(jī)器學(xué)習(xí)筆記之線性回歸技術(shù)
鏈接URL:http://www.muchs.cn/article2/pdhpic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、營(yíng)銷型網(wǎng)站建設(shè)關(guān)鍵詞優(yōu)化、網(wǎng)站營(yíng)銷、做網(wǎng)站、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司