Gini指数的计算
import torch
import numpy as npdef gini_index_single(a,b):single_gini = 1 - ((a/(a+b))**2 + (b/(a+b))**2)return round(single_gini,2) ## 是来表示的是对应着他们所对应的纯度的。其中所对应的G
## Gini指数越小的话,所对应的纯度就是越高的print(gini_index_single(105,39))def gini_index(a,b,c,d):zuo = gini_index_single(a,b)you = gini_index_single(c,d)## 算出了左边Gini,然后是算出右边的Gini,然后是对应的总的样本数之和,在来进行样本数的加权平均gini_index = zuo*(a+b)/(a+b+c+d) + you*((c+d)/(a+b+c+d))return round(gini_index,2)print(gini_index(105,39,34,125)) ## 这里都是来算出相应的Gini指数print(gini_index(37,127,100,33)) ## 算出相应的Gini指数print(gini_index(92,31,45,129)) ## 算出相应的Gini指数,最终,选出一个最小的出来进行分类的过程的。所以我们这里是选用0.36来进行分类的。## 所以我们这里选择37,127,100,33来进行相应的分类过程的。# 这里是来对应的第二次分叉print(gini_index(13,98,24,29)) ## 这里是来存在一种划分的情况的 ,这里是有这种病所对应的情况## 然后是可以来进行划分 ## 没有得这种病所对应的情况
print(gini_index(24,25,13,102)) ## 0.3 0.29 由于基尼指数变小所以是可以来进行这样的划分的。