㈠ python中的sklearn中決策樹使用的是哪一種演算法
sklearn中決策樹分為DecisionTreeClassifier和DecisionTreeRegressor,所以用的演算法是CART演算法,也就是分類與回歸樹演算法(classification and regression tree,CART),劃分標准默認使用的也是Gini,ID3和C4.5用的是信息熵,為何要設置成ID3或者C4.5呢
㈡ python里怎麼計算信息增益,信息增益比,基尼指數
1、首先自定義一份數據,分別計算信息熵,條件信息熵,從而計算信息增益。
㈢ 求python大神解釋下這段代碼,沒接觸過python不會啊
這就是一段構造函數。
(self,
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,
bootstrap=True,
oob_score=False,
n_jobs=1,
random_state=None,
verbose=0,
warm_start=False,
class_weight=None):
這是構造函數的參數,有默認值。
super(RandomForestClassifier, self).__init__(
base_estimator=DecisionTreeClassifier(),
n_estimators=n_estimators,
estimator_params=("criterion", "max_depth", "min_samples_split",
"min_samples_leaf", "min_weight_fraction_leaf",
"max_features", "max_leaf_nodes",
"random_state"),
bootstrap=bootstrap,
oob_score=oob_score,
n_jobs=n_jobs,
random_state=random_state,
verbose=verbose,
warm_start=warm_start,
class_weight=class_weight)
supper會調用基類構造函數,你可以認為這一串就是基類構造函數的參數。
self.criterion = criterion
self.max_depth = max_depth
self.min_samples_split = min_samples_split
self.min_samples_leaf = min_samples_leaf
self.min_weight_fraction_leaf = min_weight_fraction_leaf
self.max_features = max_features
self.max_leaf_nodes = max_leaf_nodes
這一串就是屬性賦值。
㈣ GBDT 如何實現特徵組合提取
以Python調用sklearn為例,在你建立GBDT對象並作fit之後,可以使用如下代碼獲得你要的規則代碼:
dot_data = tree.export_graphviz(model_tree, out_file=None,
max_depth=5, feature_names=names_list, filled=True, rounded=True) # 將決策樹規則生成dot對象
其中tree就是你的數對象,如果你的out_file後面是一個文件名,那麼你的規則會輸出到文件中;如果是None(就像上面代碼),那麼值會保存在dot_data中。
無論哪種方法,你都能獲得規則文本。然後剩下的就是普通的文本解析的事情了。
在決策樹演算法對象的tree_屬性中,存儲了所有有關決策樹規則的信息(示例中的決策樹規則存儲在model_tree.tree_中)。最主要的幾個屬性:
children_left:子級左側分類節點
children_right:子級右側分類節點
feature:子節點上用來做分裂的特徵
threshold:子節點上對應特徵的分裂閥值
values:子節點中包含正例和負例的樣本數量
上述屬性配合節點ID、節點層級便迭代能得到如下的規則信息:
1 [label="rfm_score <= 7.8375
gini = 0.1135
samples =
14581
value = [13700, 881]", fillcolor="#e58139ef"] ;
其中規則開始的1代表節點ID,rfm_score是變數名稱,rfm_score
<= 7.8375是分裂閥值,gini = 0.1135是在當前規則下的基尼指數,nsamples是當前節點下的總樣本量,nvalue為正例和負例的樣本數量。
來源:知乎
㈤ 基於python的決策樹能進行多分類嗎
決策樹主文件 tree.py
[python] view plain
#coding:utf-8
frommathimportlog
importjson
fromplotimportcreatePlot
classDecisionTree():
def__init__(self,criterion="entropy"):
self.tree=None
self.criterion=criterion
def_is_continuous_value(self,a):
#判斷一個值是否是連續型變數
iftype(a).__name__.lower().find('float')>-1or
type(a).__name__.lower().find('int')>-1:
returnTrue
else:
returnFalse
def_calc_entropy(self,dataset):
#計算數據集的香農熵
classes=dataset.ix[:,-1]
total=len(classes)
cls_count={}
forclsinclasses:
ifclsnotincls_count.keys():
cls_count[cls]=0
cls_count[cls]+=1
entropy=1.0
forkeyincls_count:
prob=float(cls_count[key])/total
entropy-=prob*log(prob,2)
returnentropy
def_calc_gini(self,dataset):
#計算數據集的Gini指數
classes=dataset.ix[:,-1]
total=len(classes)
cls_count={}
forclsinclasses:
ifclsnotincls_count.keys():
cls_count[cls]=0
cls_count[cls]+=1
gini=1.0
forkeyincls_count:
prob=float(cls_count[key])/total
gini-=prob**2
returngini
def_split_data_category(self,dataset,feature,value):
#對分類變數進行拆分
#將feature列的值為value的記錄抽取出來,同時刪除feature列
㈥ python中的sklearn中決策樹使用的是哪一種演算法
要弄清楚這個問題,首先要弄懂決策樹三大流行演算法ID3、C4.5和CART的原理,以及sklearn框架下DecisionTreeClassifier的幫助文檔。
3個演算法的主要區別在於度量信息方法、選擇節點特徵還有分支數量的不同。
ID3,採用熵(entropy)來度量信息不確定度,選擇「信息增益」最大的作為節點特徵,它是多叉樹,即一個節點可以有多個分支。
C4.5,同樣採用熵(entropy)來度量信息不確定度,選擇「信息增益比」最大的作為節點特徵,同樣是多叉樹,即一個節點可以有多個分支。
CART,採用基尼指數(Gini index)來度量信息不純度,選擇基尼指數最小的作為節點特徵,它是二叉樹,即一個節點只分兩支。
然後你認真閱讀sklearn的DecisionTreeClassifier的幫助文檔,可以發現,度量信息的方法默認是Gini,但可以改成entropy,請按需選擇;構建的樹是二叉樹;可以通過設置max_deepth、max_leaf等來實現「剪枝」,這是根據CART的損失函數減少的理論進行的。
所以總結說,如果信息度量方法按照默認的設置,那麼sklearn所用的決策樹分類器就是CART,如果改成了entropy,那麼只是使用了別的度量方法而已。其實兩者差不多。
㈦ 這段代碼是什麼意思這是python的一個腳本嗎,這裡面的call是什麼意思,求大神
看樣子是一個比較大的項目里的一個腳本。首先要明確這是一個windows的批處理腳本,並不是python腳本。
再大概看了下其內容,似乎是一個有關數據處理的軟體(BI即商業智能),這種類似軟體有可能會依賴於一些現有的數據處理庫(多半是python寫的),這個腳本的作用就是調用一些列工具把python代碼轉換成windows下的exe。
㈧ python中的sklearn中決策樹使用的是哪一種演算法
sklearn中決策樹分為DecisionTreeClassifier和DecisionTreeRegressor,所以用的演算法是CART演算法,也就是分類與回歸樹演算法(classification and regression tree,CART),劃分標准默認使用的也是Gini,ID3和C4.5用的是信息熵
㈨ python中的sklearn中決策樹使用的是哪一種演算法
sklearn中決策樹分為DecisionTreeClassifier和DecisionTreeRegressor,所以用的演算法是CART演算法,也就是分類與回歸樹演算法(classification and regression tree,CART),劃分標准默認使用的也是Gini,ID3和C4.5用的是信息熵,為何要設置成ID3或者C4.5呢?