2016-09-26 112 views
2

我正在scikit-learn中構建決策樹。搜索stackoverflow可以找到一種方法來提取與每個葉子相關的規則。現在我的目標是將這些規則應用到新的觀察中,並看看新的觀察結果將落在哪一層。如何從sciki-learn決策樹中應用學習規則

這是一個抽象的例子。假設我們得到了葉#1的規則。一個< 5和b> 7,那麼觀察屬於葉子#1。現在我想要重新觀察一下,並將這些規則應用於它來檢查它最終結束了什麼。

我正在嘗試使用決策樹進行分割。

+0

在官方網站的文檔是不夠的? http://scikit-learn.org/stable/modules/tree.html – Mai

+0

@Mai Visualization with graphviz爲您提供了有關規則的想法,但需要手動編程這些規則以便在新觀察中使用它(以弄清楚葉)。我期待自動從決策樹中提取一個函數,這將消除手動編碼。手工編碼在樹很小的時候是很好的,但是當它很大時,它幾乎是不可能的。 – user1700890

+1

如何使用_tree屬性?我想你可以查看源代碼來查看如何使用_tree屬性並從那裏開始。我不太清楚你的問題。也許稍微澄清一下可能會有所幫助。 – Mai

回答

1

您可以使用apply方法DecisionTreeClassifier來獲取每個樣本預測爲hte葉的索引。

from sklearn.tree import DecisionTreeClassifier 
clf = DecisionTreeClassifier() 
clf.fit([[1,2,3],[10,19,20],[6,7,7]],[1,1,0])  
clf.apply([[6,7,7]]) 
# array([3]) 
+0

你是對的,我知道。我想我正在放鬆自己的想法。謝謝! – user1700890

+0

其實我不知道這件事,直到我看着你的問題,所以我學到了新的東西;) – maxymoo

1

在scikit學習中使用決策樹分類器的例子可以在here找到。此示例包括訓練分類器並驗證第二個數據集的結果。

predict function可以應用訓練的決策樹時,它被用來返回結果的一個新的數據樣本:

predict(X, check_input=True) 

其中X是檢查中的新數據樣本的特徵向量。

This鏈接可能會幫助您瞭解如何輸出決策樹分類器的規則。