機器學習實驗---呼叫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的介紹就到這裡,進一步的理解如果有機會以後再補充