一、概念
站在用戶的角度思考問題,與客戶深入溝通,找到羅江網站設計與羅江網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:成都做網站、成都網站設計、企業官網、英文網站、手機端網站、網站推廣、國際域名空間、網站空間、企業郵箱。業務覆蓋羅江地區。
線性回歸是一種有監督的回歸分析技術,其是找出自變量與因變量之間的因果關系,本質上是一個函數估計的問題。回歸分析的因變量應該是連續變量,若因變量為離散變量,則問題就轉化為分類問題。回歸分析主要應用場景為預測,常用的算法有如下:線性回歸、二項式回歸、嶺回歸、Lasso等。
二、模型的表達式及推導
本文主要介紹線性回歸的一般推導,后續會推出采用梯度下降法求上述解的過程。
代碼實例
本文在實現線性回歸的技術時,為了作為對比,采用了多種回歸算法技術,如普通線性回歸,貝葉斯回歸,SVM,集成算法等,這樣對于算法的選擇有一個比較。下面來看具體代碼實現:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt #導入圖形展示庫
from sklearn.linear_model import BayesianRidge,LinearRegression,ElasticNet #批量導入要實現的回歸算法
from sklearn.svm import SVR #SVM中的回歸算法
from sklearn.ensemble.gradient_boosting import GradientBoostingRegressor #集成算法
from sklearn.model_selection import cross_val_score #交叉檢驗
from sklearn.metrics import explained_variance_score,mean_absolute_error,mean_squared_error,r2_score #批量導入指標算法
raw_data=np.loadtxt('D:\\data\\regression.txt')
x=raw_data[:,:-1] #分隔自變量
y=raw_data[:,-1] #分隔因變量
#訓練回歸模型無錫婦科檢查醫院 http://www.87554006.com/
n_folds=6 #設置交叉檢驗的次數
model_br=BayesianRidge() #建立貝葉斯嶺回歸模型對象
model_lr=LinearRegression() #建立普通線性回歸模型對象
model_etc=ElasticNet() #建立彈性網絡回歸模型
model_svr=SVR() #建立支持向量機回歸模型
model_gbr=GradientBoostingRegressor() #建立梯度增強回歸模型對象
model_names=['BayesianRidge','LinearRegression','ElasticNet','SVR','GBR'] #不同模型的名稱列表
model_dic=[model_br,model_lr,model_etc,model_svr,model_gbr] #不同模型對象名稱的列表
cv_score_list=[] #交叉驗證結果列表
pre_y_list=[] #各個回歸模型預測的y值列表
for model in model_dic: #讀出每個回歸模型對象
scores=cross_val_score(model,x,y,cv=n_folds) #將每個回歸模型導入交叉檢驗模型中做訓練檢驗
cv_score_list.append(scores) #將交叉驗證結果存入到結果列表
pre_y_list.append(model.fit(x,y).predict(x)) #將回歸訓練中得到的預測y存入到列表
#模型效果指標評估
n_samples,n_features=x.shape #總樣本量,總特征數
model_metrics_name=[explained_variance_score,mean_absolute_error,mean_squared_error,r2_score] #回歸評估指標對象集
model_metrics_list=[] #回歸評估指標列表
for i in range(5): #循環每個模型索引
tmp_list=[] #每個內循環的臨時結果列表
for m in model_metrics_name: #循環每個指標對象
tmp_score=m(y,pre_y_list[i]) #計算每個回歸指標結果
tmp_list.append(tmp_score) #將結果存入每個內循環的臨時結果列表
model_metrics_list.append(tmp_list) #將結果存入到回歸評估指標列表
df1=pd.DataFrame(cv_score_list,index=model_names) #建立交叉驗證的數據框
df2=pd.DataFrame(model_metrics_list,index=model_names,columns=['ev','mae','mse','r2']) #建立回歸指標的數據框
print ('samples:%d\t features:%d' % (n_samples,n_features)) #打印輸出樣本量和特征數量
print (90*'-') #打印分隔線
print ('cross validation result:') #打印輸出標題
print (df1) #打印輸出交叉檢驗的數據框
print (90*'-') #打印輸出分隔線
print ('regression metrics:') #打印輸出標題
print (df2) #打印輸出回歸指標的數據框
print (90*'-') #打印輸出分隔線
print ('short name \t full name') #打印輸出縮寫和全名標題
print ('ev \t explained_variance')
print ('mae \t mean_absolute_error')
print ('mse \t mean_squared_error')
print ('r2 \t r2')
print (90*'-') #打印輸出分隔線
運行結果
------------------------------------------------------------------------------------------
指標解釋:
從上圖中可以看出:增強梯度(GBR)回歸效果是所有模型中回歸效果最好的,從回歸矩陣(regression metrics)中看出其方差解釋ev達到了0.975,并且其平均絕對誤差和均方差都是最低的,分別為1.152、2.100。從交叉驗證的結果可以看出,GBR在交叉驗證的6次驗證中,其結果的穩定性相對較高,這證明該算法在應對不同的數據時穩定效果較好。
模型效果的可視化
模型擬合好以后,可以將幾種回歸效果借助matplotlib進行展示。代碼如下:
#模型效果的可視化
plt.figure #創建畫布
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]) #畫出每條預測結果線
plt.title('regression result comparison') #標題
plt.legend(loc='upper right') #圖例位置
plt.ylabel('real and predicted value') #y軸標題
plt.show() #展示圖像
文章名稱:機器學習筆記之線性回歸技術
鏈接URL:http://vcdvsql.cn/article2/pdhpic.html
成都網站建設公司_創新互聯,為您提供搜索引擎優化、營銷型網站建設、關鍵詞優化、網站營銷、做網站、靜態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯