1. 程式人生 > >機器學習實驗---呼叫sklearn庫實現GBM

機器學習實驗---呼叫sklearn庫實現GBM

導語

一直在糾結GBM這個方法到底是怎麼呼叫的,因為貌似sklearn中並沒有一個專門的方法叫做GBM。emmm,後來好像其實一般就說gradient boosting。根據官方文件我們迅速來學習它的使用方式吧~

簡單步驟

1、匯入分類器和make_hastie_10_2

from sklearn.datasets import make_hastie_10_2
from sklearn.ensemble import GradientBoostingClassifier

第一句話是匯入make_hastie_10_2這個東西,我看到這裡的時候也不知道是個啥,等下用到的時候我們再來解釋吧

然後下一句就是匯入的GBM中分類器的語句了

2、匯入資料

X,y = make_hastie_10_2(random_state=0)
X_train,X_test = X[:2000],X[2000:]
y_train,y_test = y[:2000],y[2000:]

這裡就用到了我們之前匯入的make_hastie_10_2,貌似這是一個生成訓練集和測試集的方法嗎?猴賽雷的樣子~
該方法的詳情

所以,回看我們這句話,應該就是從這12000個數據中取前2000行作為訓練集,2000行之後的作為測試集

3、開始訓練

>>>clf = GradientBoostingClassifier(n_estimators = 100,learning_rate = 1.0,max_depth = 1,random_state = 0).fit(X_train,y_train)
>>>clf.score(X_test,y_test)

這段程式碼的第一句就已經在使用fit方法吃資料了,然後第二句話,clf.score則是在使用吃飽了的分類器對測試集進行測試,看看準確率。

補充:預測

以上所說的確實能夠讓我們知道這個演算法的準確率,但是,我是要運用這個演算法的呀,我光知道你準不準確有什麼用啊?

還記得我們之前所用的機器學習演算法的時候,是用:

pre2 = clf.predict(X2)

這樣的語句來將對X2特徵的判斷賦值給pre2,在這裡我們同樣這樣操作:
這裡寫圖片描述
其中的輸出就是分類的向量了。

引數說明

學會怎麼樣一步一步去實現還不夠,我們接下來侃侃在訓練的時候的一些引數的含義和意義:

>>>clf = GradientBoostingClassifier(n_estimators = 100,learning_rate = 1.0,max_depth = 1,random_state = 0).fit(X_train,y_train)

n_estimators:定義了需要使用到的決策樹的數量,雖然GBM有較多決策樹的時候還可以保持穩健,但是還是有可能會發生過度擬合,所以要用交叉驗證進行檢驗

learning_rate:控制權重更新的幅度,通常來說這個值不應該設得太大,預設值是0.1,較小的學習速度更有穩健性

max_depth:定義了輸的最大深度,可以控制過擬合

random_state:int,RandomState例項或無,可選(預設=無)
如果int,random_state是隨機數生成器使用的種子; 如果RandomState的例項,random_state是隨機數生成器; 如果沒有,隨機數生成器是由np.random使用的RandomState例項。這個地方想來搞懂GBM的原理之後再來理解會更加容易吧~

那麼關於GBM的介紹就到這裡,進一步的理解如果有機會以後再補充