如何用Excel计算数据集的Gini系数?含决策树test size=50计算需求
Gini系数计算与决策树Gini获取解决方案
一、Excel手动计算数据集Gini系数
Gini不纯度的核心公式为:G = 1 - Σ(pᵢ²),其中pᵢ是对应类别在目标数据集/分组中的占比。针对你的5个索引(0-4)、每组30条数据的结构,操作步骤如下:
- 分组统计类别占比:对每个索引(如0)筛选对应30条数据,用
COUNTIF函数统计各类别数量,比如类别X的数量:=COUNTIF(筛选后类别区域, "X"),再除以30得到pₓ。 - 计算单组Gini:对每个索引组,计算所有类别
pᵢ的平方和,再用1减去该值,即得到该组的Gini系数。若为二元分类,公式简化为1 - (p₁² + p₂²)。 - 整体数据集Gini(可选):统计300条数据中各类别总数量,计算总占比后代入核心公式即可。
二、获取test size=50的决策树Gini系数
1. 节点层面Gini不纯度
决策树的每个节点会直接标注Gini值(即节点不纯度),查看你提供的决策树截图,直接读取对应节点的Gini标注即可。
2. 测试集评估Gini系数(分类性能指标)
若需计算测试集(50条)的Gini评估指标(与节点不纯度不同,公式为G = 2*AUC - 1),可通过Python快速实现,示例代码:
import pandas as pd from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import roc_auc_score from sklearn.model_selection import train_test_split # 读取数据集(替换为你的Excel路径) df = pd.read_excel("your_dataset.xlsx") X = df.drop("类别列名", axis=1) # 替换为你的类别列名称 y = df["类别列名"] # 拆分出size=50的测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=50, random_state=42) # 训练决策树并计算Gini dt_clf = DecisionTreeClassifier() dt_clf.fit(X_train, y_train) y_proba = dt_clf.predict_proba(X_test)[:, 1] # 取正类预测概率 auc = roc_auc_score(y_test, y_proba) gini_score = 2 * auc - 1 print(f"测试集Gini系数:{gini_score:.4f}")
内容的提问来源于stack exchange,提问作者fera fani
相关产品推荐
相关产品推荐

