决策树建模分析流程

本文详细介绍了使用Python的scikit-learn库进行决策树建模的完整流程,包括数据预处理、模型建立、参数调优、模型评估以及规则提取。通过交叉验证和网格搜索找到最优参数,提升了模型的性能。最后,利用最佳参数构建的决策树模型进行了预测,并绘制了ROC曲线,展示了模型的分类能力。
摘要由CSDN通过智能技术生成

决策树建模流程

一:数据处理

  • 先划分数据集
  • 缺失值填充
  • 0/1转码
  • 虚拟变量处理
  • 相关关系对比,删除相关关系大的部分特征
  • 等等

二:建模

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import cross_val_score

clf = DecisionTreeClassifier(random_state=420,class_weight='balanced')
cvs = cross_val_score(clf,Xtrain,Ytrain) #交叉验证

三:网格搜索找最优参数

from sklearn.model_selection import GridSearchCV

#测试参数
param_test = {
             'splitter':('best','random'),
             'criterion':('gini','entropy'), #基尼  信息熵
             'max_depth':range(3,15) #最大深度
             #,min_samples_leaf:(1,50,5)
}

gsearch= GridSearchCV(estimator=clf, #对应模型
                param_grid=param_test,#要找最优的参数
                scoring='roc_auc',#准确度评估标准 
                n_jobs=-1,# 并行数  个数   -1:跟CPU核数一致
                cv = 5,#交叉验证 5折
                iid=False,# 默认是True  与各个样本的分布一致 
                verbose=2#输出训练过程
                )

gsearch.fit(Xtrain,Ytrain)
#优化期间观察到的最高评分
gsearch.best_score_

输出最优参数

gsearch.best_params_

四:模型评估

from sklearn.metrics import accuracy_score #准确率
from sklearn.metrics import precision_score #精准率
from sklearn.metrics import recall_score #召回率
from sklearn.metrics import roc_curve

y_pre = gsearch.predict(Xtest_05)
accuracy_score(y_pre,Ytest) 

precision_score(y_pre,Ytest)

recall_score(y_pre,Ytest)

画ROC曲线

fpr,tpr,thresholds = roc_curve(y_pre,Ytest) #roc参数
import matplotlib.pyplot as plt

plt.plot(fpr,tpr,c='b',label='roc曲线')
plt.plot(fpr,fpr,c='r',ls='--') #roc曲线越接近左上角越好

五:输出规则

#最优参数
#{'criterion': 'entropy', 'max_depth': 6, 'splitter': 'best'}
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree
import graphviz

#将最优参数放到分类器
clf = DecisionTreeClassifier(criterion='entropy',max_depth=6,splitter='best')
clf = clf.fit(Xtrain_05,Ytrain)

features = Xtrain_05.columns
dot_data = tree.export_graphviz(clf,
                     feature_names=features,
                     class_names=['Not Buy','Buy'],
                     filled=True,
                     rounded=True,
                     leaves_parallel=False)

graph= graphviz.Source(dot_data)
graph

六:把图像的
标签复制到html文件中再使用浏览器打开,最后通过打印可以得到pdf文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值