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年軟體測試行業預測,手工測試已死?