决策树中的gini value怎么算
时间: 2024-03-21 09:37:44 浏览: 16
在决策树算法中,Gini value(基尼指数)是一种衡量数据集纯度或不确定性的指标,用于选择最优特征进行数据集划分。计算 Gini value 的步骤如下:
1. 计算数据集的总样本数 $N$,以及每个类别出现的次数 $n_1, n_2, ..., n_m$。
2. 对于每个类别 $i$,计算其出现的概率 $p_i=n_i/N$。
3. 计算 Gini value:
$$ Gini = 1 - \sum_{i=1}^m p_i^2 $$
Gini value 的值越小,表示数据集的纯度越高,选择这个特征进行数据集划分的决策树就会越好。
下面是一个简单的 Python 实现,其中 `dataSet` 表示数据集,最后返回的是数据集的 Gini value:
```python
def calcGini(dataSet):
numEntries = len(dataSet) # 数据集的总样本数
labelCounts = {} # 标签字典,用于存储每个标签出现的次数
for featVec in dataSet:
currentLabel = featVec[-1] # 取得当前数据的标签
if currentLabel not in labelCounts.keys():
labelCounts[currentLabel] = 0
labelCounts[currentLabel] += 1
gini = 1.0
for key in labelCounts:
prob = float(labelCounts[key])/numEntries # 计算标签的概率
gini -= prob * prob # 计算 Gini value
return gini
```
注意,这个实现中假设数据集的最后一列为分类标签。如果数据集的分类标签不在最后一列,需要修改代码中的 `featVec[-1]` 部分。