1. 程式人生 > >機器學習庫sklearn中整合學習模型引數釋義

機器學習庫sklearn中整合學習模型引數釋義

'''
scikit-learn基於AdaBoosts演算法提供了兩個模型:
1.AdaBoostClassifier用於解決分類問題
2.AdaBoostRegressor用於解決迴歸問題
'''
from sklearn.ensemble import AdaBoostClassifier

AdaBoostClassifier(base_estimator=None,
                 n_estimators=50,
                 learning_rate=1.,
                 algorithm='SAMME.R',
                 random_state=None)
'''
引數含義:
1.Base_estimator:object, optional (default=DecisionTreeClassifier)
                基分類器。預設為DecisionTreeClassifier。
                基分類器需要支援帶樣本權重的學習以及具備classes_和n_classes_屬性。
2.n_estimator:integer, optional (default=50)
                整數,預設是50.指定基分類器的數量。
                提升學習過程被終止時基分類器的最大數量。當完美的擬合訓練資料了,
                提升演算法會提前停止。這時的基本分類器數量小於給定的值
3.learn_rate:float, optional (default=1.).
                學習率。預設是1.
                通過learning_rate縮減每個分類器的貢獻。在learning_rate和n_estimators之間需要權衡。
                通常學習率越小,需要的基本分類器就越多,因此在learning_rate和n_estimators之間要有所折中。
                學習率就是下面公式中的v:
                                    F_m(x)=F_m-1(x)+v*alpha_m*G_m(x)
                其中G_m(x)就是第m個基本分類器。aplha_m是第m個基本分類器的係數。
4.algorithm:{'SAMME', 'SAMME.R'}, optional (default='SAMME.R')
            指定所採用的演算法。預設為'SAMME.R'。
            標準的AdaBoost演算法只適用於二分類問題。SAMME適用於AdaBoost多分類問題
            (1).algorithm='SAMME',採用SAMME離散提升演算法。
            (2).algorith='SAMME.R',採用SAMME.R真正的提升演算法。如果選擇SAMME.R演算法,
            基本分類器必須必須支援類別概率的計算。
            (3).SAMME.R演算法通常比SAMME收斂得更快,通過較少的提升迭代實現較低的測試誤差。
5.random_state:int, RandomState instance or None, optional (default=None)
            (1).如果為整數,則它指定了隨機數生成器的種子。
            (2).如果為RandomState例項,則指定了隨機數生成器。
            (3).如果為None,則使用預設的隨機數生成器。

屬性:
1.estimators_:list of classifiers.分類器列表。所有訓練過的基本分類器。
2.classes_ : array of shape = [n_classes]。類別標籤。
3.n_classes_ : int。類別數量。
4.estimator_weights_ : array of floats。陣列,存放每個基本分類器的權重。
5.estimator_errors_ : array of floats。陣列,存放每個基本分類器的分類誤差。
6.feature_importances_ : array of shape = [n_features]
                        每個特徵的重要性。

方法:
1.fit():模型訓練。
2.predict():模型預測。
3.predict_log_proba():預測的每個樣本屬於各個類別的概率對數值。
4.predict_proba():預測的每個樣本屬於各個類別的概率值。
5.staged_predict():預測每一輪迭代後輸入樣本的預測值。
6.staged_predict_proba():預測每一輪迭代後輸入樣本屬於各個類別的概率值。
'''

from sklearn.ensemble import AdaBoostRegressor

AdaBoostRegressor(base_estimator=None,
                 n_estimators=50,
                 learning_rate=1.,
                 loss='linear',
                 random_state=None)

'''
引數含義:
1.base_estimator:object, optional (default=DecisionTreeRegressor)
                基本分類器。預設是DecisionTreeRegressor
                基分類器需要支援帶樣本權重的學習。
2.n_estimators:integer, optional (default=50)
                整數,預設是50.指定基分類器的數量。
                提升學習過程被終止時基分類器的最大數量。當完美的擬合訓練資料了,
                提升演算法會提前停止。這時的基本分類器數量小於給定的值.
3.learning_rate:float, optional (default=1.)
                學習率。預設是1.
                通過learning_rate縮減每個分類器的貢獻。在learning_rate和n_estimators之間需要權衡。
                通常學習率越小,需要的基本分類器就越多,因此在learning_rate和n_estimators之間要有所折中。
                學習率就是下面公式中的v:
                                    F_m(x)=F_m-1(x)+v*alpha_m*G_m(x)
                其中G_m(x)就是第m個基本分類器。aplha_m是第m個基本分類器的係數。
4.loss:{'linear', 'square', 'exponential'}, optional (default='linear')
        指定損失函式。
        (1).loss='linear',線性損失函式。
        (2).loss='square',平方損失函式。
        (3).loss='exponential',指數損失函式。
        (4).在每一輪提升迭代之後,都需要通過損失函式更新權重。
5.random_state:int, RandomState instance or None, optional (default=None)
        (1).如果為整數,則它指定了隨機數生成器的種子。
        (2).如果為RandomState例項,則指定了隨機數生成器。
        (3).如果為None,則使用預設的隨機數生成器。

屬性:
1.estimators_:list of classifiers.分類器列表。存放所有訓練過的基本回歸器。
2.estimator_weights_ : array of floats。陣列,存放每個基本回歸器的權重。
5.estimator_errors_ : array of floats。陣列,存放每個基本回歸器的誤差。
6.feature_importances_ : array of shape = [n_features]
                        每個特徵的重要性。

方法:
1.fit():模型訓練。
2.predict():模型預測。
3.staged_predict():預測每一輪迭代後輸入樣本的預測值。
'''



'''
scikit-learn基於梯度提升樹演算法提供了兩個模型:
GradientBoostingClassifier即GBDT,用於分類問題
GradientBoostingRegressor即GBRT,用於迴歸問題
'''

from sklearn.ensemble import GradientBoostingClassifier

GradientBoostingClassifier(loss='deviance', learning_rate=0.1, n_estimators=100,
                 subsample=1.0, criterion='friedman_mse', min_samples_split=2,
                 min_samples_leaf=1, min_weight_fraction_leaf=0.,
                 max_depth=3, min_impurity_decrease=0.,
                 min_impurity_split=None, init=None,
                 random_state=None, max_features=None, verbose=0,
                 max_leaf_nodes=None, warm_start=False,
                 presort='auto')
'''
引數含義:
1.loss:{'deviance', 'exponential'}, optional (default='deviance')
(1).loss='deviance',此時的損失函式與邏輯迴歸的損失函式相同,為對數損失:L(Y,P(Y|X))=-logP(Y|X).
(2).loss='exponential',損失函式為指數損失函式。
2.learning_rate:float, optional (default=0.1)。預設0.1。
通過learning_rate縮減每個分類器的貢獻。在learning_rate和n_estimators之間需要權衡。
通常學習率越小,需要的基本分類器就越多,因此在learning_rate和n_estimators之間要有所折中。
學習率就是下面公式中的v:
                    F_m(x)=F_m-1(x)+v*alpha_m*G_m(x)
其中G_m(x)就是第m個基本分類器。aplha_m是第m個基本分類器的係數。
3.n_estimators:int (default=100)
指定基本決策樹的數量。梯度提升對過擬合有很好的魯棒性,因此該值越大,效能越好。
4.subsample:float, optional (default=1.0).
用於擬合個體基本學習器的樣本數量。如果小於1.0,模型將會變成隨機梯度提升決策樹。
如果subsample<1.0,此時會減少方差,提高偏差
5.criterion;string, optional (default="friedman_mse")
評估節點分裂的質量指標。
6.min_samplses_split:int, float, optional (default=2)
表示分裂一個內部節點需要的最少樣本數。
(1).如果為整數,則min_samples_split就是最少樣本數。
(2).如果為浮點數(0到1之間),則每次分裂最少樣本數為ceil(min_samples_split * n_samples)
7.min_samples_leaf:int, float, optional (default=1)
葉子節點最少樣本數
(1).如果為整數,則min_samples_split就是最少樣本數。
(2).如果為浮點數(0到1之間),則每個葉子節點最少樣本數為ceil(min_samples_leaf * n_samples)
8.min_weight_fraction_leaf:float, optional (default=0.)
指定葉子節點中樣本的最小權重。
9.max_depth:integer, optional (default=3)
指定每個基本決策樹的最大深度。最大深度限制了決策樹中的節點數量。
調整這個引數可以獲得更好的效能。
10.min_impurity_decrease:float, optional (default=0.)
 如果節點的分裂導致不純度的減少(分裂後樣本比分裂前更加純淨)大於或等於min_impurity_decrease,則分裂該節點。
 個人理解這個引數應該是針對分類問題時才有意義。這裡的不純度應該是指基尼指數。
 迴歸生成樹採用的是平方誤差最小化策略。分類生成樹採用的是基尼指數最小化策略。
 加權不純度的減少量計算公式為:
  N_t / N * (impurity - N_t_R / N_t * right_impurity
                    - N_t_L / N_t * left_impurity)
 其中N是樣本的總數,N_t是當前節點的樣本數,N_t_L是分裂後左子節點的樣本數,
 N_t_R是分裂後右子節點的樣本數。impurity指當前節點的基尼指數,right_impurity指
 分裂後右子節點的基尼指數。left_impurity指分裂後左子節點的基尼指數。
11.min_impurity_split:樹生長過程中早停止的閾值。如果當前節點的不純度高於閾值,節點將分裂,否則它是葉子節點。
這個引數已經被棄用。用min_impurity_decrease代替了min_impurity_split。
12.init:BaseEstimator, None, optional (default=None)
一個基本分類器物件或者None,該分類器物件用於執行初始的預測。
如果為None,則使用loss.init_estimator.
13.random_state:int, RandomState instance or None, optional (default=None)
(1).如果為整數,則它指定了隨機數生成器的種子。
(2).如果為RandomState例項,則指定了隨機數生成器。
(3).如果為None,則使用預設的隨機數生成器。
14.max_features:int, float, string or None, optional (default=None)
 搜尋最佳劃分的時候考慮的特徵數量。
(1).如果為整數,每次分裂只考慮max_features個特徵。
(2).如果為浮點數(0到1之間),每次切分只考慮int(max_features * n_features)個特徵。
(3).如果為'auto'或者'sqrt',則每次切分只考慮sqrt(n_features)個特徵
(4).如果為'log2',則每次切分只考慮log2(n_features)個特徵。
(5).如果為None,則每次切分考慮n_features個特徵。
(6).如果已經考慮了max_features個特徵,但還是沒有找到一個有效的切分,那麼還會繼續尋找
下一個特徵,直到找到一個有效的切分為止。
(7).如果max_features < n_features,則會減少方差,增加偏差。
15. verbose:int, default: 0
如果為0則不輸出日誌資訊,如果為1則每隔一段時間列印一次日誌資訊
16.max_leaf_nodes:int or None, optional (default=None)
指定每顆決策樹的葉子節點的最大數量。
(1).如果為None,則葉子節點數量不限。
(2).如果不為None,則max_depth被忽略。
17.warm_start:bool, default: False
當為True時,則繼續使用上一次訓練的結果,增加更多的estimators來整合。
18.presort:bool or 'auto', optional (default='auto')
在訓練過程中,是否預排序資料加速尋找最佳劃分。

屬性:
1.feature_importances_:陣列,給出每個特徵的重要性。
2.oob_improvement_ : array, shape = [n_estimators]
陣列,給出了每增加一顆基本決策樹,在包外估計(即測試集上)的損失函式的改善情況(相對於上一輪迭代)
即損失函式的減少值。
3.train_score_:陣列,給出每增加一顆基本決策樹,在訓練集上的損失函式的值。
4.init:初始預測使用的分類器。
5.estimators_:陣列,給出每棵基礎決策樹。

方法:
1.fit():訓練模型
2.predict():模型預測
3.predict_log_proba():陣列,預測各個類別的概率對數值。
4.predict_proba():陣列,預測各個類別的概率值。
'''

from sklearn.ensemble import GradientBoostingRegressor
GradientBoostingRegressor(loss='ls', learning_rate=0.1, n_estimators=100,
                 subsample=1.0, criterion='friedman_mse', min_samples_split=2,
                 min_samples_leaf=1, min_weight_fraction_leaf=0.,
                 max_depth=3, min_impurity_decrease=0.,
                 min_impurity_split=None, init=None, random_state=None,
                 max_features=None, alpha=0.9, verbose=0, max_leaf_nodes=None,
                 warm_start=False, presort='auto')

'''
引數含義:
1.loss:{'ls', 'lad', 'huber', 'quantile'}, optional (default='ls')
指定優化的損失函式。
(1).loss='ls':損失函式是平方損失函式
(2).loss='lad':損失函式為絕對值損失函式
(3).loss='huber':損失函式是上邊兩種損失函式的結合。
2.learning_rate : float, optional (default=0.1)
通過learning_rate縮減每個分類器的貢獻。在learning_rate和n_estimators之間需要權衡。
通常學習率越小,需要的基本分類器就越多,因此在learning_rate和n_estimators之間要有所折中。
學習率就是下面公式中的v:
                    F_m(x)=F_m-1(x)+v*alpha_m*G_m(x)
其中G_m(x)就是第m個基本分類器。aplha_m是第m個基本分類器的係數。
3.n_estimators : int (default=100)
指定基本決策樹的數量。梯度提升對過擬合有很好的魯棒性,因此該值越大,效能越好。
4.max_depth : integer, optional (default=3)
指定每個基本決策樹的最大深度。最大深度限制了決策樹中的節點數量。
調整這個引數可以獲得更好的效能。
5.criterion : string, optional (default="friedman_mse")
評估節點分裂的質量指標。
6.min_samples_split : int, float, optional (default=2)
表示分裂一個內部節點需要的最少樣本數。
(1).如果為整數,則min_samples_split就是最少樣本數。
(2).如果為浮點數(0到1之間),則每次分裂最少樣本數為ceil(min_samples_split * n_samples)
7.min_impurity_decrease:float, optional (default=0.)
 如果節點的分裂導致不純度的減少(分裂後樣本比分裂前更加純淨)大於或等於min_impurity_decrease,則分裂該節點。
 個人理解這個引數應該是針對分類問題時才有意義。這裡的不純度應該是指基尼指數。
 迴歸生成樹採用的是平方誤差最小化策略。分類生成樹採用的是基尼指數最小化策略。
 加權不純度的減少量計算公式為:
  N_t / N * (impurity - N_t_R / N_t * right_impurity
                    - N_t_L / N_t * left_impurity)
 其中N是樣本的總數,N_t是當前節點的樣本數,N_t_L是分裂後左子節點的樣本數,
 N_t_R是分裂後右子節點的樣本數。impurity指當前節點的基尼指數,right_impurity指
 分裂後右子節點的基尼指數。left_impurity指分裂後左子節點的基尼指數。
8.min_impurity_split:樹生長過程中早停止的閾值。如果當前節點的不純度高於閾值,節點將分裂,否則它是葉子節點。
這個引數已經被棄用。用min_impurity_decrease代替了min_impurity_split。
9.init:BaseEstimator, None, optional (default=None)
一個基本分類器物件或者None,該分類器物件用於執行初始的預測。
如果為None,則使用loss.init_estimator.
10.random_state:int, RandomState instance or None, optional (default=None)
(1).如果為整數,則它指定了隨機數生成器的種子。
(2).如果為RandomState例項,則指定了隨機數生成器。
(3).如果為None,則使用預設的隨機數生成器。
11.max_features:int, float, string or None, optional (default=None)
 搜尋最佳劃分的時候考慮的特徵數量。
(1).如果為整數,每次分裂只考慮max_features個特徵。
(2).如果為浮點數(0到1之間),每次切分只考慮int(max_features * n_features)個特徵。
(3).如果為'auto'或者'sqrt',則每次切分只考慮sqrt(n_features)個特徵
(4).如果為'log2',則每次切分只考慮log2(n_features)個特徵。
(5).如果為None,則每次切分考慮n_features個特徵。
(6).如果已經考慮了max_features個特徵,但還是沒有找到一個有效的切分,那麼還會繼續尋找
下一個特徵,直到找到一個有效的切分為止。
(7).如果max_features < n_features,則會減少方差,增加偏差。
12. verbose:int, default: 0
如果為0則不輸出日誌資訊,如果為1則每隔一段時間列印一次日誌資訊
13.max_leaf_nodes:int or None, optional (default=None)
指定每顆決策樹的葉子節點的最大數量。
(1).如果為None,則葉子節點數量不限。
(2).如果不為None,則max_depth被忽略。
14.warm_start:bool, default: False
當為True時,則繼續使用上一次訓練的結果,增加更多的estimators來整合。
15.presort:bool or 'auto', optional (default='auto')
在訓練過程中,是否預排序資料加速尋找最佳劃分。

屬性:
1.feature_importances_:陣列,給出每個特徵的重要性。
2.oob_improvement_ : array, shape = [n_estimators]
陣列,給出了每增加一顆基本決策樹,在包外估計(即測試集上)的損失函式的改善情況(相對於上一輪迭代)
即損失函式的減少值。
3.train_score_:陣列,給出每增加一顆基本決策樹,在訓練集上的損失函式的值。
4.init:初始預測使用的分類器。
5.estimators_:陣列,給出每棵基礎決策樹。

'''

'''
scikit-learn基於隨機森林演算法提供了兩個模型:
1.RandomForestClassifier用於分類問題
2.RandomForestRegressor用於迴歸問題
'''
from sklearn.ensemble import RandomForestClassifier

RandomForestClassifier(n_estimators=10,
                 criterion="gini",
                 max_depth=None,
                 min_samples_split=2,
                 min_samples_leaf=1,
                 min_weight_fraction_leaf=0.,
                 max_features="auto",
                 max_leaf_nodes=None,
                 min_impurity_decrease=0.,
                 min_impurity_split=None,
                 bootstrap=True,
                 oob_score=False,
                 n_jobs=1,
                 random_state=None,
                 verbose=0,
                 warm_start=False,
                 class_weight=None)
'''
隨機森林是一種元估計器,它在資料集的各個子樣本上擬合多個決策樹分類器,
並使用平均法來提高預測精度和控制過擬合。

引數含義:
1.n_estimators:integer, optional (default=10)
隨機森林中決策樹的數量
2.criterion:string, optional (default="gini")
評估節點分裂的質量指標。支援的標準有基尼指數和資訊增益。
3.max_depth:integer or None, optional (default=None)
指定樹的最大深度。如果為None,表示樹的深度不限。直到所有的葉子節點都是純淨的,即葉子節點
中所有的樣本點都屬於同一個類別。或者每個葉子節點包含的樣本數小於min_samples_split。
4.min_samples_split:int, float, optional (default=2)
表示分裂一個內部節點需要的最少樣本數。
(1).如果為整數,則min_samples_split就是最少樣本數。
(2).如果為浮點數(0到1之間),則每次分裂最少樣本數為ceil(min_samples_split * n_samples)
5.min_samples_leaf:int, float, optional (default=1)
整數或者浮點數,預設為1。它指定了每個葉子節點包含的最少樣本數。
如果為浮點數(0到1之間),每個葉子節點包含的最少樣本數為ceil(min_samples_leaf * n_samples)
6.max_features:int, float, string or None, optional (default="auto")
搜尋最佳劃分的時候考慮的特徵數量。
(1).如果為整數,每次分裂只考慮max_features個特徵。
(2).如果為浮點數(0到1之間),每次切分只考慮int(max_features * n_features)個特徵。
(3).如果為'auto'或者'sqrt',則每次切分只考慮sqrt(n_features)個特徵
(4).如果為'log2',則每次切分只考慮log2(n_features)個特徵。
(5).如果為None,則每次切分考慮n_features個特徵。
(6).如果已經考慮了max_features個特徵,但還是沒有找到一個有效的切分,那麼還會繼續尋找
下一個特徵,直到找到一個有效的切分為止。
7.max_leaf_nodes:int or None, optional (default=None)
指定每顆決策樹的葉子節點的最大數量。
(1).如果為None,則葉子節點數量不限。
(2).如果不為None,則max_depth被忽略。
8.min_impurity_decrease:float, optional (default=0.)
如果節點的分裂導致不純度的減少(分裂後樣本比分裂前更加純淨)大於或等於min_impurity_decrease,則分裂該節點。
加權不純度的減少量計算公式為:
  N_t / N * (impurity - N_t_R / N_t * right_impurity
                    - N_t_L / N_t * left_impurity)
其中N是樣本的總數,N_t是當前節點的樣本數,N_t_L是分裂後左子節點的樣本數,
N_t_R是分裂後右子節點的樣本數。impurity指當前節點的基尼指數,right_impurity指
分裂後右子節點的基尼指數。left_impurity指分裂後左子節點的基尼指數。
9.min_impurity_split:樹生長過程中早停止的閾值。如果當前節點的不純度高於閾值,節點將分裂,否則它是葉子節點。
這個引數已經被棄用。用min_impurity_decrease代替了min_impurity_split。
10.bootstrap:boolean, optional (default=True)
建立決策樹時是否採用自助取樣
11.oob_score:bool (default=False)
是否使用包外樣本來估計泛化精度.
12.n_jobs:integer, optional (default=1)
指定並行執行的任務數。如果為-1,任務數與CPU核數相同。
13.verbose:int, optional (default=0)
控制決策樹構建過程的詳細程度。
如果為0則不輸出日誌資訊,如果為1則每隔一段時間列印一次日誌資訊
14.class_weight: dict, list of dicts, "balanced"
(1).如果是一個字典,則字典給出了每個分類的權重,{class_label: weight}
(2).如果為‘balanced’,則每個分類的權重與該分類在樣本集中出現的頻率成反比。
(3).如果為‘balanced_subsample’,則樣本集為自助取樣法產生的決策樹的訓練資料集,
每個分類的權重與該分類在採用生成的樣本集中出現的頻率成反比。
(4).如果為None,則每個分類的權重都為1.

屬性:
1.estimators_ : list of DecisionTreeClassifier
 決策樹分類器列表,存放所有訓練過的決策樹。
2.classes_ : array of shape = [n_classes] or a list of such arrays
類別標籤
3.n_classes_ : int or list
類別數量
4.n_features_ : int
訓練時使用的特徵數量
5.n_outputs_ : int
訓練時輸出的數量
6.feature_importances_ : array of shape = [n_features]
特徵重要性
7.oob_score_ : float
訓練資料使用包外估計時的得分

方法:
1.fit():訓練模型
2.predict():預測
3.predict_log_proba():預測屬於各個類別的概率對數值
4.predict_proba():預測屬於各個類別的概率值。

'''

from sklearn.ensemble import RandomForestRegressor

RandomForestRegressor(n_estimators=10,
                 criterion="mse",
                 max_depth=None,
                 min_samples_split=2,
                 min_samples_leaf=1,
                 min_weight_fraction_leaf=0.,
                 max_features="auto",
                 max_leaf_nodes=None,
                 min_impurity_decrease=0.,
                 min_impurity_split=None,
                 bootstrap=True,
                 oob_score=False,
                 n_jobs=1,
                 random_state=None,
                 verbose=0,
                 warm_start=False)
'''
引數含義:
1.n_estimators:integer, optional (default=10)
隨機森林中決策樹的數量
2.criterion : string, optional (default="mse")
評估節點分裂的質量指標。支援的標準有MSE和MAE。
3.max_depth:integer or None, optional (default=None)
指定樹的最大深度。如果為None,表示樹的深度不限。直到所有的葉子節點都是純淨的,即葉子節點
中所有的樣本點都屬於同一個類別。或者每個葉子節點包含的樣本數小於min_samples_split。
4.min_samples_split:int, float, optional (default=2)
表示分裂一個內部節點需要的最少樣本數。
(1).如果為整數,則min_samples_split就是最少樣本數。
(2).如果為浮點數(0到1之間),則每次分裂最少樣本數為ceil(min_samples_split * n_samples)
5.min_samples_leaf:int, float, optional (default=1)
整數或者浮點數,預設為1。它指定了每個葉子節點包含的最少樣本數。
如果為浮點數(0到1之間),每個葉子節點包含的最少樣本數為ceil(min_samples_leaf * n_samples)
6.max_features:int, float, string or None, optional (default="auto")
搜尋最佳劃分的時候考慮的特徵數量。
(1).如果為整數,每次分裂只考慮max_features個特徵。
(2).如果為浮點數(0到1之間),每次切分只考慮int(max_features * n_features)個特徵。
(3).如果為'auto'或者'sqrt',則每次切分只考慮sqrt(n_features)個特徵
(4).如果為'log2',則每次切分只考慮log2(n_features)個特徵。
(5).如果為None,則每次切分考慮n_features個特徵。
(6).如果已經考慮了max_features個特徵,但還是沒有找到一個有效的切分,那麼還會繼續尋找
下一個特徵,直到找到一個有效的切分為止。
7.max_leaf_nodes:int or None, optional (default=None)
指定每顆決策樹的葉子節點的最大數量。
(1).如果為None,則葉子節點數量不限。
(2).如果不為None,則max_depth被忽略。
8.min_impurity_decrease:float, optional (default=0.)
如果節點的分裂導致不純度的減少(分裂後樣本比分裂前更加純淨)大於或等於min_impurity_decrease,則分裂該節點。
加權不純度的減少量計算公式為:
  N_t / N * (impurity - N_t_R / N_t * right_impurity
                    - N_t_L / N_t * left_impurity)
其中N是樣本的總數,N_t是當前節點的樣本數,N_t_L是分裂後左子節點的樣本數,
N_t_R是分裂後右子節點的樣本數。impurity指當前節點的基尼指數,right_impurity指
分裂後右子節點的基尼指數。left_impurity指分裂後左子節點的基尼指數。
9.min_impurity_split:樹生長過程中早停止的閾值。如果當前節點的不純度高於閾值,節點將分裂,否則它是葉子節點。
這個引數已經被棄用。用min_impurity_decrease代替了min_impurity_split。
10.bootstrap:boolean, optional (default=True)
建立決策樹時是否採用自助取樣
11.oob_score:bool (default=False)
是否使用包外樣本來估計泛化精度.
12.n_jobs:integer, optional (default=1)
指定並行執行的任務數。如果為-1,任務數與CPU核數相同。
13.verbose:int, optional (default=0)
控制決策樹構建過程的詳細程度。
如果為0則不輸出日誌資訊,如果為1則每隔一段時間列印一次日誌資訊

屬性:
1.estimators_ : list of DecisionTreeRegressor
 迴歸決策樹列表,存放所有訓練過的決策樹。
2.n_features_ : int
訓練時使用的特徵數量
3.n_outputs_ : int
訓練時輸出的數量
4.feature_importances_ : array of shape = [n_features]
特徵重要性
5.oob_score_ : float
訓練資料使用包外估計時的得分
6.ob_prediction_ : array of shape = [n_samples]
在訓練集上使用包外估計時的預測值。


方法:
1.fit():訓練模型
2.predict():預測

Notes:
控制樹大小的引數的預設值(例如``max_depth``,``min_samples_leaf``等)導致完全成長和未剪枝的樹,
這些樹在某些資料集上可能表現很好。為減少記憶體消耗,應通過設定這些引數值來控制樹的複雜度和大小。

'''
參考:《Python大戰機器學習》