1. 程式人生 > >Sklrean--決策樹_iris資料詳解

Sklrean--決策樹_iris資料詳解

0、基礎構建

利用sklearn 的鳶尾屬植物資料編寫簡單決策樹。 首先是獲取資料(乾淨資料不需要處理),然後需要對規則進行視覺化。這一步需要配置 搭建Graphviz環境

1、鳶尾屬植物資料集描述

這個資料集大家肯定熟悉的不能在熟悉了, 但是這三類植物圖片不是所有人看過的(筆者也是)。所以筆者將幾個預測目標的圖片彙總如下: 在這裡插入圖片描述

從圖片就可以看出 Iris Setosa(山鳶尾)Iris Versicolour(變色鳶尾)Iris Virginica(維吉尼亞鳶尾) 在花瓣的長寬上區別明顯。

2、建模

# 載入資料 鳶尾屬植物資料集
from sklearn.datasets import
load_iris from sklearn.tree import DecisionTreeClassifier from sklearn.tree import export_graphviz # 視覺化樹 import pydotplus def Get_irir(): iris = load_iris() return iris.data[:, 2:], iris.target def Tree_graph(decision_tree, out_root): # 將決策樹視覺化,輸出pdf(需要配置graphivz環境) iris = load_iris(
) f_names = iris.feature_names[2: ] class_name = iris.target_names dot_data = export_graphviz(decision_tree, out_file = None, feature_names = f_names, class_names = class_name, special_characters = True, rounded =
True, filled = True ) graph = pydotplus.graph_from_dot_data(daot_data) return graph.write_pdf(out_root)
## 簡單的進行2層樹深擬合
if __name__ == '__main__':
    x, y = Get_irir()
    tree_clf = DecisionTreeClassifier(max_depth = 2)
    tree_clf.fit(x, y)
    ## 決策樹視覺化 ##
    Tree_graph(tree_clf)
    ## 預測
    print(tree_clf.predict([[5, 1.5]]))
    print(tree_clf.predict_proba([[5, 1.5]]))

3、決策樹預測結果如下

[1]
# Iris-Setosa(0/54)為 0%,Iris-Versicolor為 (49/54),即 90.7%, Iris-Virginica (5/54),即 9.3 %。
[[0.         0.90740741 0.09259259]]

規則如下 在這裡插入圖片描述