Gini指数的计算

Gini指数的计算

import torch
import numpy as np

def 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  由于基尼指数变小所以是可以来进行这样的划分的。

你可能感兴趣的:(机器学习)