Sklearn参数详解--决策树
總第106篇
前言
先來簡短的回顧一下決策樹原理:
決策樹學(xué)習(xí)的算法通常是一個遞歸地(根據(jù)某一準(zhǔn)則,信息增益或基尼系數(shù))選擇最優(yōu)切分點/特征,并根據(jù)該特征對訓(xùn)練數(shù)據(jù)集進(jìn)行分割,使得對各個子數(shù)據(jù)集有一個最好的分類過程,這一過程對應(yīng)著對特征空間的劃分,也對應(yīng)著決策樹的構(gòu)建,繼續(xù)在子數(shù)據(jù)集上循環(huán)這個切割的過程,直到所有的訓(xùn)練數(shù)據(jù)子集被基本正確分類,或者沒有合適的特征為止。
你也可以看這里:
決策樹詳解
決策樹-CART算法
參數(shù)詳解
sklearn.tree.DecisionTreeClassifier(criterion='gini', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1,min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, class_weight=None, presort=False)criterion:特征選擇的標(biāo)準(zhǔn),有信息增益和基尼系數(shù)兩種,使用信息增益的是ID3和C4.5算法(使用信息增益比),使用基尼系數(shù)的CART算法,默認(rèn)是gini系數(shù)。
splitter:特征切分點選擇標(biāo)準(zhǔn),決策樹是遞歸地選擇最優(yōu)切分點,spliter是用來指明在哪個集合上來遞歸,有“best”和“random”兩種參數(shù)可以選擇,best表示在所有特征上遞歸,適用于數(shù)據(jù)集較小的時候,random表示隨機(jī)選擇一部分特征進(jìn)行遞歸,適用于數(shù)據(jù)集較大的時候。
max_depth:決策樹最大深度,決策樹模型先對所有數(shù)據(jù)集進(jìn)行切分,再在子數(shù)據(jù)集上繼續(xù)循環(huán)這個切分過程,max_depth可以理解成用來限制這個循環(huán)次數(shù)。
min_samples_split:子數(shù)據(jù)集再切分需要的最小樣本量,默認(rèn)是2,如果子數(shù)據(jù)樣本量小于2時,則不再進(jìn)行下一步切分。如果數(shù)據(jù)量較小,使用默認(rèn)值就可,如果數(shù)據(jù)量較大,為降低計算量,應(yīng)該把這個值增大,即限制子數(shù)據(jù)集的切分次數(shù)。
min_samples_leaf:葉節(jié)點(子數(shù)據(jù)集)最小樣本數(shù),如果子數(shù)據(jù)集中的樣本數(shù)小于這個值,那么該葉節(jié)點和其兄弟節(jié)點都會被剪枝(去掉),該值默認(rèn)為1。
min_weight_fraction_leaf:在葉節(jié)點處的所有輸入樣本權(quán)重總和的最小加權(quán)分?jǐn)?shù),如果不輸入則表示所有的葉節(jié)點的權(quán)重是一致的。
max_features:特征切分時考慮的最大特征數(shù)量,默認(rèn)是對所有特征進(jìn)行切分,也可以傳入int類型的值,表示具體的特征個數(shù);也可以是浮點數(shù),則表示特征個數(shù)的百分比;還可以是sqrt,表示總特征數(shù)的平方根;也可以是log2,表示總特征數(shù)的log個特征。
random_state:隨機(jī)種子的設(shè)置,與LR中參數(shù)一致。
max_leaf_nodes:最大葉節(jié)點個數(shù),即數(shù)據(jù)集切分成子數(shù)據(jù)集的最大個數(shù)。
min_impurity_decrease:切分點不純度最小減少程度,如果某個結(jié)點的不純度減少小于這個值,那么該切分點就會被移除。
min_impurity_split:切分點最小不純度,用來限制數(shù)據(jù)集的繼續(xù)切分(決策樹的生成),如果某個節(jié)點的不純度(可以理解為分類錯誤率)小于這個閾值,那么該點的數(shù)據(jù)將不再進(jìn)行切分。
class_weight:權(quán)重設(shè)置,主要是用于處理不平衡樣本,與LR模型中的參數(shù)一致,可以自定義類別權(quán)重,也可以直接使用balanced參數(shù)值進(jìn)行不平衡樣本處理。
presort:是否進(jìn)行預(yù)排序,默認(rèn)是False,所謂預(yù)排序就是提前對特征進(jìn)行排序,我們知道,決策樹分割數(shù)據(jù)集的依據(jù)是,優(yōu)先按照信息增益/基尼系數(shù)大的特征來進(jìn)行分割的,涉及的大小就需要比較,如果不進(jìn)行預(yù)排序,則會在每次分割的時候需要重新把所有特征進(jìn)行計算比較一次,如果進(jìn)行了預(yù)排序以后,則每次分割的時候,只需要拿排名靠前的特征就可以了。
對象/屬性
classes_:分類模型的類別,以字典的形式輸出
clf.classes_ --------------- array([0, 1, 2])#表示0,1,2類別feature_importances_:特征重要性,以列表的形式輸出每個特征的重要性
max_features_:最大特征數(shù)
n_classes_:類別數(shù),與classes_對應(yīng),classes_輸出具體的類別
n_features_:特征數(shù),當(dāng)數(shù)據(jù)量小時,一般max_features和n_features_相等
n_outputs_:輸出結(jié)果數(shù)
tree_:輸出整個決策樹,用于生成決策樹的可視化
方法
decision_path(X):返回X的決策路徑
fit(X, y):在數(shù)據(jù)集(X,y)上使用決策樹模型
get_params([deep]):獲取模型的參數(shù)
predict(X):預(yù)測數(shù)據(jù)值X的標(biāo)簽
predict_log_proba(X):返回每個類別的概率值的對數(shù)
predict_proba(X):返回每個類別的概率值(有幾類就返回幾列值)
score(X,y):返回給定測試集和對應(yīng)標(biāo)簽的平均準(zhǔn)確率
總結(jié)
以上是生活随笔為你收集整理的Sklearn参数详解--决策树的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【20210928】理想化
- 下一篇: 为jupyter_notebook增加目