04-12 scikit-learn庫之隨機森林

更新、更全的《機器學習》的更新網站,更有python、go、數據結構與算法、爬蟲、人工智能教學等着你:http://www.javashuo.com/article/p-vozphyqp-cm.htmlnode

scikit-learn庫之隨機森林

本文主要介紹隨機森林的兩個模型RandomForestClassifierRandomForestRegressor,這兩個模型調參包括兩部分,第一部分是Bagging框架,第二部分是CART決策樹的參數。本文會詳解介紹RandomForestClassifier模型,而後會對比着講解RandomForestRegressor模型。python

接下來將會討論上述二者的區別,因爲是從官方文檔翻譯而來,翻譯會略有偏頗,有興趣的也能夠去scikit-learn官方文檔查看https://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble算法

1、RandomForestClassifier

1.1 使用場景

RandomForestClassfier模型主要解決分類問題,其餘也沒啥好說的。bootstrap

1.2 代碼

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=1000, n_features=4,
                           n_informative=2, n_redundant=0, random_state=0, shuffle=False)
clf = RandomForestClassifier(n_estimators=100, max_depth=2, random_state=0)
clf.fit(X, y)
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
            max_depth=2, max_features='auto', max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, n_estimators=100, n_jobs=None,
            oob_score=False, random_state=0, verbose=0, warm_start=False)
print(clf.feature_importances_)
[0.14205973 0.76664038 0.0282433  0.06305659]
print(clf.predict([[0, 0, 0, 0]]))
[1]

1.3 參數

  • n_estimators::弱學習器個數,int類型。弱學習的個數,也能夠說是弱學習器的最大迭代次數。默認爲10。
  • criterion:特徵選擇,str類型。criterion='gini'表示基尼指數;criterion='entropy'表示信息增益,推薦使用'gini'。默認爲'gini'。
  • splitter:特徵劃分點選擇,str類型。splitter='best'在特徵的全部劃分點中找出最優的劃分點,適合小樣本量;splitter='random'隨機的在部分劃分點中找到局部最優的劃分點,適合大樣本量。默認爲'best'。
  • max_depth:最大深度,int類型。若是樣本特徵數較少可使用默認值,若是樣本特徵數較多通常用max_depty=10-100限制樹的最大深度。默認爲None。
  • min_samples_split:內部節點劃分須要最少樣本數,float類型。限定子樹繼續劃分的條件,若是某節點的樣本數少於min_samples_split,則會中止繼續劃分子樹。若是樣本數量過大,建議增大該值,不然建議使用默認值。默認爲2。
  • min_samples_leaf:葉子節點最少樣本數float類型。若是在某次劃分葉子節點數目小於樣本數,則會和兄弟節點一塊兒剪枝。若是樣本數量過大,建議增大該值,不然建議使用默認值。默認爲1。
  • min_weight_fraction_leaf:葉子節點最小的樣本權重和,float類型。該參數限制了葉子節點全部樣本權重和的最小值,若是小於該值,則會和兄弟節點一塊兒剪枝。若是樣本有角度的缺失值,或者樣本的分佈誤差較大,則能夠考慮權重問題。默認爲0。
  • max_features:劃分的最大特徵數,str、int、float類型。max_depth='log2'表示最多考慮\(log_2n\)個特徵;max_depth={'sqrt','auto'}表示最多考慮\(\sqrt{n}\)個特徵;max_depth=int類型,考慮\(|int類型|\)個特徵;max_depth=float類型,如0.3,則考慮\(0.3n\)個特徵,其中\(n\)爲樣本總特徵數。默認爲None,樣本特徵數不大於50推薦使用默認值。
  • max_leaf_nodes:最大葉子節點數,int類型。限制最大葉子節點數,能夠防止樹過深,所以能夠防止過擬合。默認爲None。
  • min_impurity_decrease:節點減少不純度,float類型。若是某節點劃分會致使不純度的減小大於min_impurity_decrease,則中止該節點劃分。默認爲0。
  • min_impurity_split:節點劃分最小不純度,float類型。若是某節點的不純度小於min_impurity_split,則中止該節點劃分,即不生成葉子節點。默認爲1e-7(0.0000001)。
  • class_weight:類別權重,dict類型或str類型。對於二元分類問題可使用class_weight={0:0.9,1:0.1},表示0類別權重爲0.9,1類別權重爲0.1,str類型即爲'balanced',模型將根據訓練集自動修改不一樣類別的權重。默認爲None。
  • bootstrp:bool類型。默認爲True。構建決策樹時是否引導樣本。
  • oob_score:袋外模型,bool類型。是否採用袋外樣原本評估模型的好壞,我的推薦設置爲True,由於袋外分數反應了一個模型擬合後的泛化能力。默認爲False。
  • n_jobs:並行數,int類型。n_jobs=1使用1個cpu運行程序;n_jobs=2,使用2個cpu運行程序;n_jobs=-1,使用全部cpu運行程序。默認爲1。
  • random_state:隨機數種子,int類型。random_state=None,不一樣時刻產生的隨機數據是不一樣的;random_state=int類型,相同隨機數種子不一樣時刻產生的隨機數是相同的。默認爲None。
  • verbose:日誌冗長度,int類型。verbose=0,不輸出訓練過程;verbose=1,輸出部分訓練過程;verbose>1,輸出全部的訓練過程。默認爲0。
  • warm_start:熱啓動,bool類型。若是爲True,則基於上一個隨機森林添加決策樹;若是爲False,則從新生成一個隨機森林。默認爲False。
  • class_weight:樣本類別權重,{dict類型,'balanced'}。給每一個類別指定不一樣的權重,'balanced'將自動分配不一樣類別樣本的權重。默認爲None。

1.4 屬性

  • estimators_:list類型。全部決策樹集合。
  • classes_:array類型。全部類別列表。
  • n_classes_:int類型。類別個數。
  • n_features_:int類型。特徵個數。
  • n_outputs_:int類型。輸出個數。
  • feature_importances_:array類型。特徵重要度。
  • oob_score_:float類型。用袋外模型訓練數據的分數。
  • oob_decision_function_:array類型。袋外模型訓練數據的決策函數。

1.5 方法

  • apply(X[, check_input]):返回每一個樣本預測的葉子節點索引。
  • decision_path(X[, check_input]):返回樣本X在樹中的決策路徑。
  • fit(X,y):把數據放入模型中訓練模型。
  • get_params([deep]):返回模型的參數,能夠用於Pipeline中。
  • predict(X):預測樣本X的分類類別。
  • predict_log_proba(X):返回樣本X在各個類別上對應的對數機率。
  • predict_proba(X):返回樣本X在各個類別上對應的機率。
  • score(X,y):基於報告決定係數\(R^2\)評估模型。
  • set_prams(**params):建立模型參數。

2、RandomForestRegressor

RandomForestRegressor模型相比較RandomForestClassifier模型解決迴歸問題。數據結構

相關文章
相關標籤/搜索