訂閱
糾錯
加入自媒體

Python數(shù)據(jù)科學(xué):決策樹

通過安裝graphviz和相應(yīng)的插件,便能實現(xiàn)決策樹的可視化輸出,具體安裝過程不細(xì)說。

# 設(shè)置graphviz路徑

os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'

# 決策樹的可視化

dot_data = tree.export_graphviz(clf, out_file=None, feature_names=data.columns, class_names=['0', '1'], filled=True)

graph = pydotplus.graph_from_dot_data(dot_data)

Image(graph.create_png())

# 將決策樹模型輸出為圖片

graph.write_png(r'pang.png')

# 將決策樹模型輸出為PDF

graph.write_pdf('tree.pdf')

可視化結(jié)果如下。

可以看見決策樹根節(jié)點以fico_score <= 683.5為分割標(biāo)準(zhǔn)。

全體樣本的基尼系數(shù)為0.483,在3284個樣本中,被預(yù)測變量為0的有2671個,為1的有1839個。

使用scikit-learn提供的參數(shù)搜索進行調(diào)優(yōu)(GridSearchCV)。

# 設(shè)置樹的最大深度

max_depth = [None, ]

# 設(shè)置樹的最大葉節(jié)點數(shù)

max_leaf_nodes = np.a(chǎn)range(5, 10, 1)

# 設(shè)置樹的類標(biāo)簽權(quán)重

class_weight = [{0: 1, 1: 2}, {0: 1, 1: 3}]

# 設(shè)置參數(shù)網(wǎng)格param_grid = {'max_depth': max_depth,

 'max_leaf_nodes': max_leaf_nodes,

'class_weight': class_weight}

# 對參數(shù)組合進行建模和效果驗證

clf_cv = GridSearchCV(estimator=clf,
                     param_grid=param_grid,
                     cv=5,
                     scoring='roc_auc')

# 輸出網(wǎng)格搜索的決策樹模型信息

print(clf_cv.fit(train_data, train_target))

輸出網(wǎng)格搜索的決策樹模型信息。

使用得到的“最優(yōu)”模型對測試集進行評估。

# 輸出優(yōu)化后的決策樹模型的決策類評估指標(biāo)

print(metrics.classification_report(test_target, clf_cv.predict(test_data)))

# 輸出優(yōu)化后的決策樹模型的參數(shù)組合

print(clf_cv.best_params_)

輸出結(jié)果。

計算模型在不同閾值下的靈敏度和特異度指標(biāo),繪制ROC曲線。

# 使用模型進行預(yù)測

train_est = clf_cv.predict(train_data)

train_est_p = clf_cv.predict_proba(train_data)[:, 1]

test_est = clf_cv.predict(test_data)

test_est_p = clf_cv.predict_proba(test_data)[:, 1]

# 繪制ROC曲線

fpr_test, tpr_test, th_test = metrics.roc_curve(test_target, test_est_p)

fpr_train, tpr_train, th_train = metrics.roc_curve(train_target, train_est_p)

plt.figure(figsize=[3, 3])

plt.plot(fpr_test, tpr_test, 'b--')

plt.plot(fpr_train, tpr_train, 'r-')

plt.title('ROC curve')

plt.show()

# 計算AUC值

print(metrics.roc_auc_score(test_target, test_est_p))

ROC曲線圖如下,其中訓(xùn)練集的ROC曲線(實線)與測試集的ROC曲線(虛線)很接近,說明模型沒有過擬合。

模型的ROC曲線下面積為0.7358,模型效果一般。

<上一頁  1  2  
聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

    掃碼關(guān)注公眾號
    OFweek人工智能網(wǎng)
    獲取更多精彩內(nèi)容
    文章糾錯
    x
    *文字標(biāo)題:
    *糾錯內(nèi)容:
    聯(lián)系郵箱:
    *驗 證 碼:

    粵公網(wǎng)安備 44030502002758號