You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

sklearn随机森林plot_tree可视化结果释义咨询

糖尿病预测随机森林决策树可视化问题解答

基于公开diabetes.csv数据集构建糖尿病预测分类模型的实现代码如下:

from matplotlib import pyplot as plt
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

diab_cols = ['Pregnancies', 'Insulin', 'BMI', 'Age','Glucose','BloodPressure','DiabetesPedigreeFunction'] 
X = df[diab_cols]# Features 
y = df.Outcome # Target variable 

X_train, X_test, y_train, y_test = train_test_split(X, y, 
    test_size=0.25, 
    random_state=0)

model = RandomForestClassifier(n_estimators=100,max_depth=5).fit(X_train,y_train)  
plt.figure(figsize=(20,20))
_ = tree.plot_tree(model.estimators_[0], feature_names=X.columns, filled=True)

运行代码后得到随机森林中第0棵基决策树的可视化结果:
随机森林第0棵基决策树可视化结果

针对图中相关标注的三个问题解答如下:

1. 节点标注的Gini具体含义

Gini即基尼不纯度,是CART决策树做分支划分时用来衡量节点样本混杂度的核心指标,二分类场景下取值范围为0-0.5:

  • Gini=0时,当前节点所有样本属于同一类别,节点纯度最高,无需继续划分
  • Gini越接近0.5,当前节点下患病、不患病两类样本占比越接近,样本混杂度越高
  • 决策树每次分支的核心逻辑,就是找到能让分支后子节点Gini值下降最多的特征和切分阈值,尽可能提升子节点的样本纯度。

2. 节点中Glucose对应的[66,72]取值的意义

这组数字是当前节点包含的两类样本的计数,统计顺序固定为[负类样本数, 正类样本数]:

  • 本数据集中Outcome字段取值0代表未患糖尿病(负类),1代表患有糖尿病(正类)
  • 对应[66,72]的含义是:落在该节点的所有样本中,有66例为未患病样本,72例为患病样本
  • 节点的预测规则很直接:哪类样本在节点中占比更高,就把所有落入该节点的样本预测为对应类别,该节点显然会将样本判定为患病。

3. 蓝色、白色、粉色三类填充颜色的区别

填充色是tree.plot_tree设置filled=True后,根据节点的预测类别、纯度自动生成的标识:

  • 蓝色填充:代表当前节点预测结果为患病(正类),蓝色越深,节点Gini值越低、患病样本占比越高,预测置信度越高
  • 粉色填充:代表当前节点预测结果为未患病(负类),粉色越深,节点Gini值越低、未患病样本占比越高,预测置信度越高
  • 白色填充:代表当前节点下两类样本占比基本持平,Gini值接近0.5,没有明确的类别倾向,节点纯度最低。

内容的提问来源于stack exchange,提问作者rafine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 15:57:51