一、决策树算法基础1.1 什么是决策树决策树是一种树形结构的监督学习算法它通过一系列 if-else 决策规则对数据进行划分最终在叶节点给出预测结果。分类树叶节点输出类别标签回归树叶节点输出连续数值1.2 核心概念概念说明根节点树的起始节点包含全部样本内部节点对应一个特征和划分阈值叶节点最终预测结果纯度节点内样本的同类程度剪枝防止过拟合的手段1.3 常用分裂指标Gini系数衡量节点不纯度越小越纯信息增益基于熵的减少量均方误差MSE用于回归树## 二、案例一决策树多元回归二、案例一决策树多元回归2.1 问题描述使用体重和年龄两个特征预测血压收缩压。2.2 完整代码importpandasaspdfromsklearnimporttree# 导入数据datapd.read_csv(多元回归.csv,encodingGBK,enginepython)# 建立回归模型xdata[[体重,年龄]]ydata[[血压收缩]]dtrtree.DecisionTreeRegressor(random_state0)# 训练模型dtr.fit(x,y)# 预测tree_predictdtr.predict(x)print(tree_predict)# 模型校验scoredtr.score(x,y)print(score)2.3 关键点解读注意回归任务使用DecisionTreeRegressor。random_state0保证结果可复现。score返回的是 R² 决定系数越接近 1 说明拟合越好。## 三、案例二电信客户流失预测决策树分类三、案例二电信客户流失预测决策树分类3.1 问题描述预测电信客户是否会流失属于二分类问题。3.2 核心步骤数据划分训练集 80%测试集 20%交叉验证选参遍历 max_depth选择召回率最高的深度模型训练与评估决策树可视化3.3 代码精华# 交叉验证选择最佳深度scores[]param[2,3,4,5,6,7,8,9]foriinparam:dtree.DecisionTreeClassifier(criteriongini,max_depthi,random_state0)scorecross_val_score(d,data_train,target_train,cv5,scoringrecall)scores.append(score.mean())bestparam[np.argmax(scores)]# 可视化决策树fig,axplt.subplots(figsize(32,32))plot_tree(dtr,filledTrue,axax)plt.show()3.4 评估指标选择使用**召回率Recall**作为主要指标因为流失客户被漏掉的代价更高。混淆矩阵和classification_report提供了全面的评估维度。## 四、随机森林算法基础四、随机森林算法基础4.1 什么是随机森林随机森林是集成学习的代表算法它通过构建多棵决策树并综合它们的投票结果分类或平均值回归来提高预测性能。4.2 核心思想Bagging有放回地抽样构建不同的训练子集特征随机选择每棵树分裂时只考虑部分特征投票/平均最终结果由所有树共同决定4.3 优势抗过拟合能力强能处理高维数据可输出特征重要性五、案例三信用卡欺诈检测随机森林 下采样5.1 问题描述信用卡交易数据中欺诈样本极少类别不均衡需要通过随机森林进行识别。5.2 解决策略数据标准化对 Amount 列进行标准化下采样Under-sampling将多数类样本数量降至与少数类相同随机森林建模5.3 核心代码# 下采样positive_egdata_train[data_train[Class]0]negative_egdata_train[data_train[Class]1]positive_egpositive_eg.sample(len(negative_eg))data_cpd.concat([positive_eg,negative_eg])# 随机森林rfRandomForestClassifier(n_estimators100,max_features0.8,random_state42)rf.fit(x_train_bal,y_train_bal)# 特征重要性可视化importancesrf.feature_importances_5.4 特征重要性通过feature_importances_属性可以直观地看到哪些特征对预测贡献最大有助于特征筛选和业务解读。六、案例四垃圾邮件分类随机森林 过采样 网格搜索6.1 问题描述根据邮件的词频特征和字符特征判断是否为垃圾邮件。6.2 关键代码# SMOTE过采样fromimblearn.over_samplingimportSMOTE oversamplerSMOTE(random_state0)x_train1,y_train1oversampler.fit_resample(x_train,y_train)# 网格搜索param_grid{n_estimators:[100,150,200,250],max_features:[sqrt,log2]}gridGridSearchCV(estimatorrf0,param_gridparam_grid,cv5,scoringrecall)grid.fit(x_train1,y_train1)# 输出最佳参数print(grid.best_params_)6.3 结果解读classification_report输出精确率、召回率、F1-score。特征重要性图帮助理解哪些单词/字符对判断垃圾邮件最有用。七、两种算法对比总结对比维度决策树随机森林解释性★★★★★ 非常强★★★☆☆ 一般过拟合风险较高较低训练速度RRాలు预测精度一般较高特征重要性支持支持适用场景需要解释性的小型项目追求精度的大中型项目八、常见问题与调优建议8.1 决策树调优max_depth控制树的深度防止过拟合min_samples_split节点分裂所需最小样本数min_samples_leaf叶节点最小样本数criteriongini 或 entropy8.2 随机森林调优n_estimators树的数量越多越稳定但训练变慢max_features每棵树的最大特征数常用 sqrt 或 log2max_depth限制树深减少过拟合class_weight处理样本不均衡8.3 样本不均衡处理下采样减少多数类样本适合数据量大时过采样增加少数类样本如 SMOTE调整 class_weight给少数类更高的权重九、学习心得通过这四个案例的实战我对决策树和随机森林有了更直观的理解决策树像是一位经验丰富的医生通过一系列问题层层推理得出诊断结论可解释性极强。随机森林则像是一个专家会诊团队每位专家决策树独立给出意见最终集体决策准确性和稳定性更高。数据预处理往往比模型选择更重要尤其是标准化、缺失值处理和样本均衡。交叉验证和网格搜索是调参的利器但要注意计算成本。特征重要性分析不仅能优化模型还能帮助业务方理解关键驱动因素。