1. 程式人生 > >sklearn.ensemble.RandomForest 引數詳解

sklearn.ensemble.RandomForest 引數詳解

RandomForestRegressor 引數

    sklearn.ensemble.RandomForestRegressor(  n_estimators=10,
                                             criterion='mse',
                                             max_depth=None,
                                             min_samples_split=2,
                                             min_samples_leaf=1
, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, min_impurity_split=1e-07, bootstrap=True
, oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False)

RandomForestRegressor 引數詳解(官方英文版)

英文詳解

RandomForestRegressor 引數詳解(中文版)

轉自此處

其中關於決策樹的引數:

  • criterion: “mse”來選擇最合適的節點。

  • splitter: ”best” or “random”(default=”best”)隨機選擇屬性還是選擇不純度最大的屬性,建議用預設。

  • max_features: 選擇最適屬性時劃分的特徵不能超過此值。
    當為整數時,即最大特徵數;當為小數時,訓練集特徵數*小數;
    if “auto”, then max_features=sqrt(n_features).
    If “sqrt”, thenmax_features=sqrt(n_features).
    If “log2”, thenmax_features=log2(n_features).
    If None, then max_features=n_features.

  • max_depth: (default=None)設定樹的最大深度,預設為None,這樣建樹時,會使每一個葉節點只有一個類別,或是達到min_samples_split。

  • min_samples_split: 根據屬性劃分節點時,每個劃分最少的樣本數。

  • min_samples_leaf: 葉子節點最少的樣本數。

  • max_leaf_nodes: (default=None)葉子樹的最大樣本數。

  • min_weight_fraction_leaf: (default=0) 葉子節點所需要的最小權值

  • verbose: (default=0) 是否顯示任務程序

關於隨機森林特有的引數:

  • n_estimators=10: 決策樹的個數,越多越好,但是效能就會越差,至少100左右(具體數字忘記從哪裡來的了)可以達到可接受的效能和誤差率。

  • bootstrap=True: 是否有放回的取樣。

  • oob_score=False: oob(out of band,帶外)資料,即:在某次決策樹訓練中沒有被bootstrap選中的資料。多單個模型的引數訓練,我們知道可以用cross validation(cv)來進行,但是特別消耗時間,而且對於隨機森林這種情況也沒有大的必要,所以就用這個資料對決策樹模型進行驗證,算是一個簡單的交叉驗證。效能消耗小,但是效果不錯。

  • n_jobs=1: 並行job個數。這個在ensemble演算法中非常重要,尤其是bagging(而非boosting,因為boosting的每次迭代之間有影響,所以很難進行並行化),因為可以並行從而提高效能。1=不併行;n:n個並行;-1:CPU有多少core,就啟動多少job

  • warm_start=False: 熱啟動,決定是否使用上次呼叫該類的結果然後增加新的。

  • class_weight=None: 各個label的權重。

進行預測可以有幾種形式:

  • predict_proba(x): 給出帶有概率值的結果。每個點在所有label的概率和為1.

  • predict(x): 直接給出預測結果。內部還是呼叫的predict_proba(),根據概率的結果看哪個型別的預測值最高就是哪個型別。

  • predict_log_proba(x): 和predict_proba基本上一樣,只是把結果給做了log()處理。