回歸預(yù)測分析python數(shù)據(jù)化運營線性回歸總結(jié)_第1頁
回歸預(yù)測分析python數(shù)據(jù)化運營線性回歸總結(jié)_第2頁
回歸預(yù)測分析python數(shù)據(jù)化運營線性回歸總結(jié)_第3頁
回歸預(yù)測分析python數(shù)據(jù)化運營線性回歸總結(jié)_第4頁
回歸預(yù)測分析python數(shù)據(jù)化運營線性回歸總結(jié)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第回歸預(yù)測分析python數(shù)據(jù)化運營線性回歸總結(jié)目錄內(nèi)容介紹一般應(yīng)用場景線性回歸的常用方法線性回歸實現(xiàn)線性回歸評估指標(biāo)線性回歸效果可視化數(shù)據(jù)預(yù)測

內(nèi)容介紹

以Python使用線性回歸簡單舉例應(yīng)用介紹回歸分析。

線性回歸是利用線性的方法,模擬因變量與一個或多個自變量之間的關(guān)系;

對于模型而言,自變量是輸入值,因變量是模型基于自變量的輸出值,適用于x和y滿足線性關(guān)系的數(shù)據(jù)類型的應(yīng)用場景。

用于預(yù)測輸入變量和輸出變量之間的關(guān)系,特別是當(dāng)輸入變量的值發(fā)生變化時,輸出變量的值也隨之發(fā)生變化。

回歸模型正是表示從輸入變量到輸出變量之間映射的函數(shù)。

線性回歸幾乎是最簡單的模型了,它假設(shè)因變量和自變量之間是線性關(guān)系的,一條直線簡單明了。

一般應(yīng)用場景

連續(xù)性數(shù)據(jù)的預(yù)測:例如房價預(yù)測、銷售額度預(yù)測、貸款額度預(yù)測。

簡單來說就是用歷史的連續(xù)數(shù)據(jù)去預(yù)測未來的某個數(shù)值。

線性回歸的常用方法

最小二乘法、貝葉斯嶺回歸、彈性網(wǎng)絡(luò)回歸、支持向量機回歸、支持向量機回歸等。

線性回歸實現(xiàn)

importnumpyasnp#numpy庫

fromsklearn.linear_modelimportBayesianRidge,LinearRegression,ElasticNet,Lasso#批量導(dǎo)入要實現(xiàn)的回歸算法

fromsklearn.svmimportSVR#SVM中的回歸算法

fromsklearn.ensemble.gradient_boostingimportGradientBoostingRegressor#集成算法

fromsklearn.model_selectionimportcross_val_score#交叉檢驗

fromsklearn.metricsimportexplained_variance_score,mean_absolute_error,mean_squared_error,r2_score#批量導(dǎo)入指標(biāo)算法

importpandasaspd#導(dǎo)入pandas

importmatplotlib.pyplotasplt#導(dǎo)入圖形展示庫

importrandom

#隨機生成100組包含5組特征的數(shù)據(jù)

feature=[[random.random(),random.random(),random.random(),random.random(),random.random()]foriinrange(100)]

dependent=[round(random.uniform(1,100),2)foriinrange(100)]

#訓(xùn)練回歸模型

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

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

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

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

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

model_la=Lasso()#建立支持向量機回歸模型對象

model_gbr=GradientBoostingRegressor()#建立梯度增強回歸模型對象

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

model_dic=[model_br,model_lr,model_etc,model_svr,model_la,model_gbr]#不同回歸模型對象的集合

cv_score_list=[]#交叉檢驗結(jié)果列表

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

formodelinmodel_dic:#讀出每個回歸模型對象

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

cv_score_list.append(scores)#將交叉檢驗結(jié)果存入結(jié)果列表

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

線性回歸評估指標(biāo)

model_gbr:擬合貝葉斯嶺模型,以及正則化參數(shù)lambda(權(quán)重的精度)和alpha(噪聲的精度)的優(yōu)化。

model_lr:線性回歸擬合系數(shù)w=(w1,…)的線性模型,wp)將觀測到的目標(biāo)與線性近似預(yù)測的目標(biāo)之間的殘差平方和降到最小。

model_etc:以L1和L2先驗組合為正則元的線性回歸。

model_svr:線性支持向量回歸。

model_la:用L1先驗作為正則化器(又稱Lasso)訓(xùn)練的線性模型

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

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

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

foriinrange(6):#循環(huán)每個模型索引

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

forminmodel_metrics_name:#循環(huán)每個指標(biāo)對象

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

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

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

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

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

線性回歸效果可視化

#模型效果可視化

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

plt.plot(np.arange(len(feature)),dependent,color='k',label='truey')#畫出原始值的曲線

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

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

fori,pre_yinenumerate(pre_y_list):#讀出通過回歸模型預(yù)測得到的索引及結(jié)果

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

plt.title('regressionresultcomparison')#標(biāo)題

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

plt.ylabel('realandpredictedvalue')#y軸標(biāo)題

plt.show()#展示圖像

數(shù)據(jù)預(yù)測

#模型應(yīng)用

new_point_set=[[random.random(),random.random(),random.random(),random.random(),random.random()],

[random.random(),random.random(),random.random(),random.random(),random.random()],

[random.random(),random.random(),random.random(),random.random(),random.random()],

[random.random(),random.random(),random.random(),random.random(),random.random()]]#要預(yù)測的新數(shù)據(jù)集

print("貝葉斯嶺回歸模型預(yù)測結(jié)果:")

fori,new_pointinenumerate(new_point_set):#循環(huán)讀出每個要預(yù)測的數(shù)據(jù)點

new_pre_y=model_gbr.predict(np.array(new_point).reshape(1,-1))

print('預(yù)測隨機數(shù)值%d是:%.2f'%(i+1,new_pre_y))#打印輸出每個數(shù)據(jù)點的預(yù)測信息

print(50*'-')

print("普通線性回歸模型預(yù)測結(jié)果:")

fori,new_pointinenumerate(new_point_set):#循環(huán)讀出每個要預(yù)測的數(shù)據(jù)點

new_pre_y=model_lr.predict(np.array(new_point).reshape(1,-1))

print('預(yù)測隨機數(shù)值%d是:%.2f'%(i+1,new_pre_y))#打印輸出每個數(shù)據(jù)點的預(yù)測信息

print(50*'-')

print("彈性網(wǎng)絡(luò)回歸模型預(yù)測結(jié)果:")

fori,new_pointinenumerate(new_point_set):#循環(huán)讀出每個要預(yù)測的數(shù)據(jù)點

new_pre_y=model_etc.predict(np.array(new_point).reshape(1,-1))

print('預(yù)測隨機數(shù)值%d是:%.2f'%(i+1,new_pre_y))#打印輸出每個數(shù)據(jù)點的預(yù)測信息

print(50*'-')

print("支持向量機回歸模型預(yù)測結(jié)果:")

fori,new_pointinenumerate(new_point_set):#循環(huán)讀出每個要預(yù)測的數(shù)據(jù)點

new_pre_y=model_svr.predict(np.array(new_point).reshape(1,-1))

print('預(yù)測隨機數(shù)值%d是:%.2f'%(i+1,new_pre_y))#打印輸出每個數(shù)據(jù)點的預(yù)測信息

print(50*'-')

print("拉索回歸模型預(yù)測結(jié)果:")

fori,new_pointi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論