Sklrean--決策樹_iris資料詳解
阿新 • • 發佈:2018-12-19
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]]
規則如下