最近我們被客戶要求撰寫關於決策樹的研究報告,包括一些圖形和統計輸出。
在本文中,決策樹是對例子進行分類的一種簡單表示。它是一種有監督的機器學習技術,數據根據某個參數被連續分割。決策樹分析可以幫助解決分類和回歸問題 ( 點擊文末「閱讀原文」獲取完整代碼數據******** ) 。
決策樹算法將數據集分解成更小的子集;同時,相關的決策樹也在逐步發展。決策樹由節點(測試某個屬性的值)、邊/分支(對應於測試的結果並連接到下一個節點或葉子)和葉子節點(預測結果的終端節點)組成,使其成為一個完整的結構。
」
擴展:GBDT (Gradient Boosting Decision Tree) 梯度提升決策樹
GBDT (Gradient Boosting Decision Tree) 梯度提升決策樹。DT-Decision Tree決策樹,GB是Gradient Boosting,是一種學習策略,GBDT的含義就是用Gradient Boosting的策略訓練出來的DT模型。
在這篇文章中,我們將學習Python中決策樹的實現,使用scikit learn包。
對於我們的分析,我們選擇了一個非常相關和獨特的數據集,該數據集適用於醫學科學領域,它將有助於預測病人是否患有糖尿病 ( 查看文末了解數據免費獲取方式 ) ,基於數據集中採集的變量。這些信息來自國家糖尿病、消化道和腎臟疾病研究所,包括預測變量,如病人的BMI、懷孕情況、胰島素水平、年齡等。讓我們直接用決策樹算法來解決這個問題,進行分類。
用Python實現決策樹
對於任何數據分析問題,我們首先要清理數據集,刪除數據中的所有空值和缺失值。在這種情況下,我們不是在處理錯誤的數據,這使我們省去了這一步。
# 加載庫
from sklearn.model_selection import train_test_split #導入 train_test_split 函數
from sklearn import metrics #導入scikit-learn模塊以計算準確率
# 載入數據集
data = pd.read_csv("diabs.csv", header=None, names=col_names)
讓我們看看這個數據集的前幾行是什麼樣子的
pima.head()
#在特徵和目標變量中拆分數據集
X = pima[feature] # 特徵
y = pima.label # 目標變量
3. 我們把數據按70:30的比例分成訓練集和測試集。
# 將數據集分成訓練集和測試集
train_test_split(X, y, test_size=0.3, random_state=1) # 70%的訓練和30%的測試
標準做法,你可以根據需要調整70:30至80:20。
點擊標題查閱往期內容
R語言用邏輯回歸、決策樹和隨機森林對信貸數據集進行分類預測
左右滑動查看更多
01
02
03
04
# 創建決策樹分類器對象
clf = DecisionTreeClassifier()
5. 估計分類器預測結果的準確程度。準確度是通過比較實際測試集值和預測值來計算的。
# 模型準確率,分類器正確的機率是多少?
print("準確率:",metrics.accuracy_score(y_test, y_pred))
我們的決策樹算法有67.53%的準確性。這麼高的數值通常被認為是好的模型。
決策樹的可視化。
Image(graph.create_png())
你會注意到,在這個決策樹圖中,每個內部節點都有一個分割數據的決策規則。
衡量通過決策樹分析創建的節點的不純度
Gini指的是Gini比,衡量決策樹中節點的不純度。人們可以認為,當一個節點的所有記錄都屬於同一類別時,該節點是純的。這樣的節點被稱為葉子節點。
在我們上面的結果中,由於結果的複雜性,完整的決策樹很難解釋。修剪一棵樹對於結果的理解和優化它是至關重要的。這種優化可以通過以下三種方式之一進行。
在我們的案例中,我們將改變樹的最大深度作為預修剪的控制變量。讓我們試試max_depth=3。
# 創建決策樹分類器對象
DecisionTree( max_depth=3)
在Pre-pruning上,決策樹算法的準確率提高到77.05%,明顯優於之前的模型。
決策樹在Python中的實現
Image(graph.create_png())
結果:
這個修剪過的模型的結果看起來很容易解釋。有了這個,我們就能夠對數據進行分類,並預測一個人是否患有糖尿病。但是,決策樹並不是你可以用來提取這些信息的唯一技術,你還可以探索其他各種方法。
如果你想學習和實現這些算法,那麼你應該探索通過輔助方法學習,並得到專業人士的1對1指導。拓端數據科學職業軌道計劃保證了1:1的指導,項目驅動的方法,職業輔導,提供實習工作項目保證,來幫助你將職業生涯轉變為數據驅動和決策的角色。請聯繫我們以了解更多信息!
數據獲取
在下面公眾號後台回復「糖尿病數據」,可免費獲取完整數據。
本文摘選 《 PYTHON用決策樹分類預測糖尿病和可視化實例 》 ,點擊「閱讀原文」獲取全文完代碼和數據資料。
點擊標題查閱往期內容
樣條曲線、決策樹、Adaboost、梯度提升(GBM)算法進行回歸、分類和動態可視化
SAS分類決策樹預測貸款申請評分剪枝和結果可視化
分類回歸決策樹交互式修剪和更美觀地可視化分析細胞圖像分割數據集
PYTHON用戶流失數據挖掘:建立邏輯回歸、XGBOOST、隨機森林、決策樹、支持向量機、樸素貝葉斯和KMEANS聚類用戶畫像
PYTHON集成機器學習:用ADABOOST、決策樹、邏輯回歸集成模型分類和回歸和網格搜索超參數優化
Python對商店數據進行lstm和xgboost銷售量時間序列建模預測分析
PYTHON集成機器學習:用ADABOOST、決策樹、邏輯回歸集成模型分類和回歸和網格搜索超參數優化
R語言集成模型:提升樹boosting、隨機森林、約束最小二乘法加權平均模型融合分析時間序列數據
Python對商店數據進行lstm和xgboost銷售量時間序列建模預測分析
R語言用主成分PCA、 邏輯回歸、決策樹、隨機森林分析心臟病數據並高維可視化
R語言基於樹的方法:決策樹,隨機森林,Bagging,增強樹
R語言用邏輯回歸、決策樹和隨機森林對信貸數據集進行分類預測
spss modeler用決策樹神經網絡預測ST的股票
R語言中使用線性模型、回歸決策樹自動組合特徵因子水平
R語言中自編基尼係數的CART回歸決策樹的實現
R語言用rle,svm和rpart決策樹進行時間序列預測
python在Scikit-learn中用決策樹和隨機森林預測NBA獲勝者
python中使用scikit-learn和pandas決策樹進行iris鳶尾花數據分類建模和交叉驗證
R語言里的非線性模型:多項式回歸、局部樣條、平滑樣條、 廣義相加模型GAM分析
R語言用標準最小二乘OLS,廣義相加模型GAM ,樣條函數進行邏輯回歸LOGISTIC分類
R語言ISLR工資數據進行多項式回歸和樣條回歸分析
R語言中的多項式回歸、局部回歸、核平滑和平滑樣條回歸模型
R語言用泊松Poisson回歸、GAM樣條曲線模型預測騎自行車者的數量
R語言分位數回歸、GAM樣條曲線、指數平滑和SARIMA對電力負荷時間序列預測R語言樣條曲線、決策樹、Adaboost、梯度提升(GBM)算法進行回歸、分類和動態可視化
如何用R語言在機器學習中建立集成模型?
R語言ARMA-EGARCH模型、集成預測算法對SPX實際波動率進行預測在python 深度學習Keras中計算神經網絡集成模型R語言ARIMA集成模型預測時間序列分析R語言基於Bagging分類的邏輯回歸(Logistic Regression)、決策樹、森林分析心臟病患者
R語言基於樹的方法:決策樹,隨機森林,Bagging,增強樹
R語言基於Bootstrap的線性回歸預測置信區間估計方法
R語言使用bootstrap和增量法計算廣義線性模型(GLM)預測置信區間
R語言樣條曲線、決策樹、Adaboost、梯度提升(GBM)算法進行回歸、分類和動態可視化
Python對商店數據進行lstm和xgboost銷售量時間序列建模預測分析
R語言隨機森林RandomForest、邏輯回歸Logisitc預測心臟病數據和可視化分析
R語言用主成分PCA、 邏輯回歸、決策樹、隨機森林分析心臟病數據並高維可視化
Matlab建立SVM,KNN和樸素貝葉斯模型分類繪製ROC曲線
matlab使用分位數隨機森林(QRF)回歸樹檢測異常值