用Skiti learn和pandas實現嶺回歸

2021-08-28 05:47:30 字數 2013 閱讀 8624

ridge回歸的損失函式:

j(θ)=1/2 (xθ-y)t (xθ-y) +1/2 α||θ||²2

對於演算法的實現,一般先確定模型,然後根據模型確定目標函式。而機器學習的實現基礎是資料,對資料的處理分析必不可少,演算法實現後還需對模型評估對比。

設定線性回歸模型如下:

pe=θ0+θ1∗at+θ2∗v+θ3∗ap+θ4∗rh

資料的讀取以及資料集的劃分

import matplotlib.pyplot as plt

%matplotlib inline

import pandas as pd

import numpy as np

from sklearn import datasets,linear_model

data=pd.read_csv('...\data.csv')

x=data[['at','v','ap','rh']]

y=data[['pe']]

#劃分資料集

from sklearn.cross_validation import train_test_split

x_train ,x_test,y_train,y_test=train_test_split(x,y,random_state=1)

用skiti-learn執行ridge回歸

from sklearn.cross_model import ridge

ridge=ridge(alpha=1)

ridge.fit(x_train,y_train)

#超引數的設定對結果影響比較大,我們先設為1,觀察結果

print ridge.coef_

print ridge.intercept_

選擇超引數,並研究超引數與回歸係數θ的關係

from sklearn.linear_model import ridgecv

ridgecv=ridgecv(alphas=[0.01,0.1,0.5,1,3,5,7,10,20,100])

ridgecv.fit(x_train,y_train)

ridgecv.alpha_

# 得到最優超引數

通過ridge回歸的損失函式表示式可以看到,超引數越大,那麼正則項懲罰的就越厲害,得到回歸係數θ就越小,最終趨近與0。而如果超引數越小,即正則化項越小,那麼回歸係數θ就越來越接近於普通的線性回歸係數。

#研究超引數與回歸係數θ的關係

x=1./(np.arange(1,11)+np.arrage(0,10)[:,np,newaxis])

y=np.ones(10)

#說實話,矩陣很多東西我還不是很明白,x,y的構造不是很明白

n_alphas=200

#設定200個超引數

alphas=pd.logspace(-10,-2,n_alphas)

#超引數在10的-10次方和10的-2次方中取值

clf= linear_model.ridge(fit_intercept=false)

coefs =

for a in alphas:

clf.set_params(alpha=a)

clf.fit(x, y)

#用圖形標識

ax = plt.gca()

ax.plot(alphas, coefs)

ax.set_xscale('log')

#翻轉x軸的大小方向,讓alpha從大到小顯示

ax.set_xlim(ax.get_xlim()[::-1])

plt.xlabel('alpha')

plt.ylabel('weights')

plt.title('ridge coefficients as a function of the regularization')

plt.axis('tight')

#座標軸適應資料

plt.show()

Kettle Kitchen和Pan的命令列引數

引數語法 name value 引數以斜線 或者橫線 開頭,後面跟引數名稱。大部分引數後面都要有引數值。引數和引數值之間用冒號 或者 連線,引數值裡面如果有空格,引數值必須用單引號或雙引號引起來。kitchen和pan共有的引數如下 引數名引數含義 作用norep rep資源庫名稱 要連線的資源庫名...

Kettle中pan和kitchen使用

kettle 命令列使用說明 1.kitchen 作業執行器 是乙個作業執行引擎,用來執行作業。這是乙個命令列執行工具,引數說明如下 1 rep repositoryname 任務包所在儲存名 2 user repositoryusername 執行人 3 pass repositorypasswo...

kettle 中kitchen和pan的使用

kettle中有四個主要的部件分別是作業 轉換 步驟 跳。其中作業和轉換能夠相互呼叫執行。每乙個轉換中的乙個執行單元叫做步驟,連線步驟之間的線叫做跳。在linux中我們通常使用kitchen和pan執行作業和轉換。kitchen用來執行作業,pan用來執行轉換。具體語法如下 kitchen.sh f...