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






