決策樹算法屬于監督學習算法的范疇,適用于連續和分類輸出變量,通常會被用于解決分類和回歸問題。
決策樹是一種類似流程圖的樹結構,其中每個內部節點表示對屬性的測試,每個分支表示測試的結果,每個節點都對應一個類標簽。
決策樹算法思路
開始,將整個訓練集視為根。
對于信息增益,假設屬性是分類的,對于基尼指數,假設屬性是連續的。
在屬性值的基礎上,記錄被遞歸地分布。
使用統計方法將屬性排序為根節點。
找到最佳屬性并將其放在樹的根節點上。
現在,將數據集的訓練集拆分為子集。在制作子集時,請確保訓練數據集的每個子集都應具有相同的屬性值。
通過在每個子集上重復1和2來查找所有分支中的葉節點。
Python實現決策樹算法
需要經歷建設和運營兩個階段:
建設階段,預處理數據集。使用Python sklearn包從訓練和測試中拆分數據集。訓練分類器。
運營階段,作出預測。計算準確度。
數據導入,為了導入和操作數據,我們使用了python中提供的pandas包。
在這里,我們使用的URL直接從UCI站點獲取數據集,無需下載數據集。當您嘗試在系統上運行此代碼時,請確保系統應具有活動的Internet連接。
由于數據集由“,”分隔,所以我們必須將sep參數的值作為傳遞。
另一件事是注意數據集不包含標頭,因此我們將Header參數的值作為none傳遞。如果我們不傳遞header參數,那么它將把數據集的第一行視為header。
數據切片,在訓練模型之前,我們必須將數據集拆分為訓練和測試數據集。
為了分割數據集進行訓練和測試,我們使用了sklearn模塊train_test_split
首先,我們必須將目標變量與數據集中的屬性分開。
X=balance_data.values[:,1:5] Y=balance_data.values[:,0]
登錄后復制
以上是分隔數據集的代碼行。變量X包含屬性,而變量Y包含數據集的目標變量。
下一步是拆分數據集以用于訓練和測試目的。
X_train,X_test,y_train,y_test=train_test_split( X,Y,test_size=0.3,random_state=100)
登錄后復制
上一行拆分數據集以進行訓練和測試。由于我們在訓練和測試之間以70:30的比例拆分數據集,因此我們將test_size參數的值傳遞為0.3。
random_state變量是用于隨機采樣的偽隨機數生成器狀態。