2026/3/28 20:19:49
网站建设
项目流程
广西网站建设价格低,怀仁建设局网站,免费建站模板哪个好,wordpress uc点赞文章目录一、决策树基本概念二、决策树分类算法1. ID3算法2. C4.5算法3. CART决策树三、决策树回归模型1. 回归树特点2. 回归树计算示例四、Scikit-learn中的决策树实现1. 分类决策树参数2. 回归决策树参数五、Python实现示例1. 分类决策树实现六、决策树剪枝1. 剪枝的目的2. 剪…文章目录一、决策树基本概念二、决策树分类算法1. ID3算法2. C4.5算法3. CART决策树三、决策树回归模型1. 回归树特点2. 回归树计算示例四、Scikit-learn中的决策树实现1. 分类决策树参数2. 回归决策树参数五、Python实现示例1. 分类决策树实现六、决策树剪枝1. 剪枝的目的2. 剪枝方法3. 预剪枝策略七、模型评估指标1. AUC-ROC曲线2. AUC的优点一、决策树基本概念决策树是一种有监督学习算法通过对训练样本的学习建立分类或回归规则并依据这些规则对新样本进行预测。它的核心思想是将数据从根节点逐步划分到叶子节点形成一个树状结构。决策树的组成根节点第一个节点包含所有数据非叶子节点中间节点进行数据划分的节点叶子节点最终结果节点不再继续划分二、决策树分类算法决策树主要有三种分类标准1. ID3算法使用信息增益作为分裂标准基于熵值衡量节点的不确定性。熵值计算公式H ( U ) − ∑ i 1 n p i log 2 p i H(U) -\sum_{i1}^n p_i \log_2 p_iH(U)−∑i1npilog2pi熵值越小节点越纯包含的类别越单一。2. C4.5算法使用信息增益率作为分裂标准解决了ID3算法倾向于选择取值较多的特征的问题。3. CART决策树使用基尼系数作为分裂标准可以用于分类和回归问题。基尼系数计算公式二分类G i n i ( p ) 2 p ( 1 − p ) Gini(p) 2p(1-p)Gini(p)2p(1−p)三、决策树回归模型1. 回归树特点解决回归问题的决策树模型必须是二叉树结构节点分裂依据是使均方误差MSE最小化2. 回归树计算示例以简单数据集为例x12345678910y5.565.75.916.46.87.058.98.799.05通过计算不同切分点的损失函数找到最优切分点逐步构建回归树。损失函数L ( j , s ) ∑ x i ∈ R 1 ( j , s ) ( y i − c ^ 1 ) 2 ∑ x i ∈ R 2 ( j , s ) ( y i − c ^ 2 ) 2 L(j, s) \sum_{x_i \in R_1(j, s)} (y_i - \hat{c}_1)^2 \sum_{x_i \in R_2(j, s)} (y_i - \hat{c}_2)^2L(j,s)∑xi∈R1(j,s)(yi−c^1)2∑xi∈R2(j,s)(yi−c^2)2其中c ^ 1 \hat{c}_1c^1和c ^ 2 \hat{c}_2c^2分别是两个区域的样本均值。四、Scikit-learn中的决策树实现1. 分类决策树参数fromsklearn.treeimportDecisionTreeClassifier主要参数说明criterion: 分裂标准‘gini’基尼系数或 ‘entropy’信息熵max_depth: 树的最大深度防止过拟合min_samples_split: 分裂内部节点所需的最小样本数min_samples_leaf: 叶子节点最少样本数max_leaf_nodes: 最大叶子节点数random_state: 随机种子保证结果可重复2. 回归决策树参数fromsklearn.treeimportDecisionTreeRegressor主要参数说明criterion: 分裂标准‘mse’均方误差或 ‘mae’平均绝对误差其他参数与分类树类似五、Python实现示例1. 分类决策树实现importpandasaspdfromsklearnimporttreefromsklearn.model_selectionimporttrain_test_splitfromsklearnimportmetricsimportmatplotlib.pyplotaspltfromsklearn.metricsimportconfusion_matrix# 可视化混淆矩阵函数defcm_plot(y,yp):cmconfusion_matrix(y,yp)plt.matshow(cm,cmapplt.cm.Blues)plt.colorbar()forxinrange(len(cm)):fory_inrange(len(cm)):plt.annotate(cm[x,y_],xy(y_,x),horizontalalignmentcenter,verticalalignmentcenter)plt.ylabel(True label)plt.xlabel(Predicted label)returnplt# 导入数据dataspd.read_excel(电信客户流失数据.xlsx)# 划分特征和标签datadatas.iloc[:,:-1]targetdatas.iloc[:,-1]# 划分训练集和测试集data_train,data_test,target_train,target_test\ train_test_split(data,target,test_size0.2,random_state42)# 创建决策树分类器dtrtree.DecisionTreeClassifier(criteriongini,max_depth5,random_state60)# 训练模型dtr.fit(data_train,target_train)# 训练集预测train_predicteddtr.predict(data_train)# 评估训练集print(metrics.classification_report(target_train,train_predicted))cm_plot(target_train,train_predicted).show()# 测试集预测test_predicteddtr.predict(data_test)# 评估测试集print(metrics.classification_report(target_test,test_predicted))cm_plot(target_test,test_predicted).show()# 模型评分scoredtr.score(data_test,target_test)print(f模型准确率:{score})六、决策树剪枝1. 剪枝的目的防止过拟合提高模型泛化能力。2. 剪枝方法预剪枝在树构建过程中提前停止生长限制树的深度限制叶子节点的个数限制叶子节点的样本数后剪枝先构建完整的树然后自底向上进行剪枝3. 预剪枝策略限制树的深度max_depth限制叶子节点的个数max_leaf_nodes限制分裂节点的最小样本数min_samples_split限制叶子节点的最小样本数min_samples_leaf七、模型评估指标1. AUC-ROC曲线AUC曲线下面积衡量模型对正负样本的区分能力ROC接收者操作特征曲线显示不同阈值下真正例率和假正例率的关系2. AUC的优点考虑了分类器对正例和负例的分类能力在样本不平衡的情况下依然有效不受样本不平衡问题影响是相对稳健的评价指标# AUC值计算y_pred_probadtr.predict_proba(data_test)ay_pred_proba[:,1]auc_resultmetrics.roc_auc_score(target_test,a)print(fAUC值:{auc_result})# 绘制ROC曲线fromsklearn.metricsimportroc_curve fpr,tpr,thresholdsroc_curve(target_test,a)plt.figure()plt.plot(fpr,tpr,colordarkorange,lw2,labelfROC curve (area{auc_result:.2f}))plt.plot([0,1],[0,1],colornavy,lw2,linestyle--)plt.xlim([0.0,1.0])plt.ylim([0.0,1.05])plt.xlabel(False Positive Rate)plt.ylabel(True Positive Rate)plt.title(Receiver Operating Characteristic)plt.legend()plt.show()