簡體   English   中英

有沒有辦法手動修改從給定數據集學習到的決策樹中設置的閾值?

[英]Is there any way to manually modify the thresholds set in the decision tree learnt from a given dataset?

我試圖使用 scikit-learn 的模塊tree創建一個決策樹模型。 生成模型后,我將樹和決策所依據的標准可視化。 但是,我希望手動修改某些標准中的閾值,以查看相同的輸出如何變化。 有什么方法可以這樣做嗎? 或者任何庫一旦從數據集中學習到所需的閾值,就會將決策樹轉換為一堆 if-else 語句,反之亦然?

我知道模塊選擇的閾值基於一些雜質指標,如基尼雜質、信息增益等。但是,我仍然想用這些閾值進行試驗。

謝謝!

是的,您可以輕松做到這一點。

sklearn決策樹通過tree_屬性公開其底層樹。 除其他外,這個tree_有一個屬性threshold ,它是一個包含所有節點閾值的 numpy 數組。 您可以修改此數組,從而更改閾值。

例如:

X,y = load_breast_cancer(return_X_y=True)
dt = DecisionTreeClassifier(max_depth=3).fit(X,y)
print(dt.tree_.threshold)     #All the thresholds, size equals "dt.tree_.node_count"
dt.tree_.threshold[3] = 10.0  #Manually modifying a threshold    

為了驗證,如果您在此修改之前和之后比較單獨測試集的准確性(假設您修改了一個非葉節點),您應該注意到一個變化(這可能更糟)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM