1.決策樹
決策樹是一種機器學習的方法。決策樹的生成算法有ID3, C4.5和C5.0等。決策樹是一種樹形結構,其中每個內部節點表示一個屬性上的判斷,每個分支代表一個判斷結果的輸出,最后每個葉節點代表一種分類結果。通過學習樣本得到一個決策樹,這個決策樹能夠對新的數據給出正確的分類。
決策樹的學習過程
1)特征選擇:從訓練數據的特征中選擇一個特征作為當前節點的分裂標准(特征選擇的標准不同產生了不同的特征決策樹算法)。
2)決策樹生成:根據所選特征評估標准,從上至下遞歸地生成子節點,直到數據集不可分則停止決策樹停止聲場。
3)剪枝:決策樹容易過擬合,需要剪枝來縮小樹的結構和規模(包括預剪枝和后剪枝)。
2.例子:
數據集:泰坦尼克號乘客數據:一共有1313條乘客信息,這個例子中取pclass,sex,age

代碼:
#coding=utf-8 import pandas as pd from sklearn.model_selection import train_test_split from sklearn.feature_extraction import DictVectorizer #特征轉換器 from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import classification_report from sklearn import tree #1.數據獲取 titanic = pd.read_csv('http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt') #print titanic.head() #print titanic.info() X = titanic[['pclass','age','sex']] #提取要分類的特征。一般可以通過最大熵原理進行特征選擇 y = titanic['survived'] print X.shape #(1313, 3) #print X.head() #print X['age'] #2.數據預處理:訓練集測試集分割,數據標准化 X['age'].fillna(X['age'].mean(),inplace=True) #age只有633個,需補充,使用平均數或者中位數都是對模型偏離造成最小的策略 X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=33) # 將數據進行分割 vec = DictVectorizer(sparse=False) X_train = vec.fit_transform(X_train.to_dict(orient='record')) #對訓練數據的特征進行提取 X_test = vec.transform(X_test.to_dict(orient='record')) #對測試數據的特征進行提取 #轉換特征后,凡是類別型型的特征都單獨獨成剝離出來,獨成一列特征,數值型的則不變 print vec.feature_names_ #['age', 'pclass=1st', 'pclass=2nd', 'pclass=3rd', 'sex=female', 'sex=male'] #3.使用決策樹對測試數據進行類別預測 dtc = DecisionTreeClassifier() dtc.fit(X_train,y_train) y_predict = dtc.predict(X_test) #4.獲取結果報告 print 'Accracy:',dtc.score(X_test,y_test) print classification_report(y_predict,y_test,target_names=['died','servived']) #5.將生成的決策樹保存 with open("jueceshu.dot", 'w') as f: f = tree.export_graphviz(dtc, out_file = f)
運行結果:

結果評價:
決策樹在模型描述上有着巨大的優勢。決策樹的推斷邏輯非常直觀,具有清晰的可解釋性,也方便了模型的可視化。一般無需考慮對數據的量化甚至標准化。
3.決策樹模型的可視化
1)以上的代碼將生成文件jueceshu.dot,需要通過Graphviz(http://www.graphviz.org/)將python生成的決策樹dot文件轉化成pdf文件。
2)安裝Graphviz后,需要設置環境變量:
添加系統環境變量 :建立變量名GRAPHVIZ_DOT ;值為安裝的路徑C:\Program Files (x86)\Graphviz2.34\bin\dot.exe
設置環境變量 在用戶環境變量添加以下一個變量;建立變量名 GRAPHVIZ_INSTALL_DIR, 值為如C:\Program Files (x86)\Graphviz2.34
在系統環境變量 建立變量名PATH中添加Graphviz的bin目錄路徑,如C:\Program Files (x86)\Graphviz2.34\bin
測試是否安裝成功:在cmd中輸入dot -version檢驗是否安裝成功
3)通過cd指令切換到該目錄下。
輸入以下的指令:
dot -Tpdf jueceshu.dot -o output.pdf
生成的決策樹:

