scikit-learn庫 決策樹結果檢驗

scikit-learn庫 決策樹結果檢驗

來自專欄 Python3 與 數據挖掘 基礎

現在有鳶尾花經典決策樹模型的數據,共有150行。spno列是指花的類型(1代表剛毛鳶尾花,2代表變色鳶尾花,3是佛吉尼亞鳶尾花),也就是因變數。slen是指花萼長,swid是指花萼寬,plen是指花瓣長,pwid是指花瓣寬。

一、數據處理

這些數據是從別處獲得的,其實這些數據sklearn裡面已經自帶了。

from sklearn.datasets import load_iris

iris = load_iris()

這樣就能得到數據了。

既然是要檢驗結果,自然要將數據分成兩大部分,按照7:3(105行:45行)分成訓練集和測試集。

然後再將兩個集的數據分成自變數和因變數:

其實這兩步可以用train_test_split就可以完成。

二 建立模型

數據準備好就可以建立模型測試了。

代碼基本一致,按照默認設置。

import sklearnimport pydotplusimport pandas as pd from sklearn import tree#導入各種庫model=tree.DecisionTreeClassifier() #選擇模型,並設置參數(這裡沒有設置參數)model=model.fit(x_train,y_train) #訓練數據with open(rC:Users數據DesktopModel ree.dot,w) as f: f=tree.export_graphviz(model,out_file=f)#將訓練的模型保存dot_data=tree.export_graphviz(model, out_file=None, feature_names=x_train.columns,class_names=[Bristle_iris, Colored_irises,Virginia_irises], filled=True, rounded=True, special_characters=True)graph=pydotplus.graph_from_dot_data(dot_data,)graph.write_pdf(rC:Users數據DesktopModel ree.pdf)#將模型可視化並保存

三 運用測試集合進行預測

四 檢查預測準確性

檢查預測是否準確其實只需要檢查test這個DataFrame裡面的『spno』列是否與『預測值』這一列有多少相等。

45個結果全是零,也就是說預測的值完全與實際值相等,正確率達到100%。

其實也可以這樣

剛剛用SPSS軟體用類似的方法進行建模,在多次調整參數之後,準確率達到了96%。

在建立模型的時候並不是說準確率越高,模型就越好,因為在建立模型時準確率高,但是實際使用時可能並不高。

我們返回去看看模型,我們發現多個葉子上面是只有一個或者兩個案例的,這樣的情況就讓我覺得這些葉子很有可能是過度的,不需要的。過度擬合的模型在實際運用中將會錯誤率很高。

歡迎各位關注我的兩個專欄。


推薦閱讀:

Python學習筆記(1)
Python在Finance上的應用3:處理股票數據基礎
Flask中,用upgrade命令遷移資料庫後,生成的資料庫里沒有數據表怎麼回事?
深度學習中的Python語言4:實踐和練習Python基礎概念(jupyter notebook版)
2018年軟體測試行業預測,手工測試已死?

TAG:Python入門 | Python | 數據挖掘入門 |