精华内容
下载资源
问答
  • Gini系数

    千次阅读 2019-06-02 19:41:46
    Gini系数 评价指标使用Gini系数:Gini=A/(A+B) 注:gini = 2*AUC-1

    Gini系数

    评价指标使用Gini系数:Gini=A/(A+B)

    gini系数
    注:gini = 2*AUC-1

    展开全文
  • gini系数

    2020-10-08 18:27:39
    kaggle比赛Porto Seguro’s Safe Driver Prediction中gini系数。赛题中描述不够详细,而不少博客的解释和赛题本身不一致,本解释和赛题比较一致。

    kaggle比赛Porto Seguro’s Safe Driver Prediction中gini系数。赛题中描述不够详细,而不少博客的解释和赛题本身不一致,本解释和赛题比较一致。
    在这里插入图片描述

    展开全文
  • Gini 系数

    千次阅读 2018-08-01 15:04:48
    Gini 系数: 某个节点的Gini不纯度计算: 比如,某节点A样本分属两类,C1:2, C2:4,则Gini(A) = 1 - ...显然,前者的不纯度更高,所以某节点的Gini系数越大则其不纯度越高。 而当评判分裂优劣时,需要用到两个子节点...

    Gini 系数:


    某个节点的Gini不纯度计算:
    比如,某节点A样本分属两类,C1:2, C2:4,则Gini(A) = 1 - (2/6)^2 - (4/6) ^2 = 0.444,节点B,C1:6, C2:0, 则 Gini(B) = 1 - (6/6)^2 - (0/6)^2 = 0。显然,前者的不纯度更高,所以某节点的Gini系数越大则其不纯度越高。


    而当评判分裂优劣时,需要用到两个子节点的Gini系数来计算。
    比如某根节点有12个样本(6:6),按照某特征的某阈值分裂成两个子节点A(2:4)和B(0:6),则此次的split的Gini系数为:6/12*0.444 + 6/12*0 = 0.222. 那这个分类效果如何呢?比如按照另外一个特征的某阈值来分类的话,可以分成C(6:6)和D(0:0),则此次的split的Gini系数为:12/12*0.5 + 0/12*0 = 0.5. 而显然前者的分类效果好,可见,Gini_split值越小越好。

     

    对于熵来说,越小说明越纯,而Gini同样,而这都是针对某个节点,如果某节点越纯则我们越能确定它属于哪一类,则越是理想结果。所以,对于信息增益来说,如果父节点的熵已定,则希望子节点的熵尽量小,这样:1.信息增益得到最大,2.分出来的子节点的类标越明确(越纯)。而对于Gini系数来说,同样是尽量让分出来的子节点拥有尽量低的不纯度(越纯则类标越明确)。——子节点的样本分布越不均匀,Gini系数和熵越小,分类效果越好。

    【所以在特征选择的时候常常用信息增益,如果IG(信息增益大)的话那么这个特征对于分类来说很关键~~ 决策树就是这样来找特征的!】

    展开全文
  • 计算gini系数

    2014-09-04 01:44:38
    python编写的gini系数计算,可用于数据挖掘
  • GINI系数收入不平等预测使用决策树
  • 在给定特征的条件概率下对其他特征进行遍历,找到gini系数最小的特征,并返回gini系数值以及按照此特征重新划分后的子空间。 #读数据 data=pd.read_csv('example_data.csv') #pandas-framework # humility outlook ...

    特征选择,决策树生成,决策树剪枝

    特征选择

    gini计算系数函数。
    按照特征进行dataframe划分函数。
    在给定特征的条件概率下对其他特征进行遍历,找到gini系数最小的特征,并返回gini系数值以及按照此特征重新划分后的子空间。

    #读数据
    data=pd.read_csv('example_data.csv')
    #pandas-framework
    #  humility   outlook  temp  windy play
    # 0      high     sunny   hot  False   no
    # 1      high     sunny   hot   True   no
    # 2      high  overcast   hot  False  yes
    # 3      high     rainy  mild  False  yes
    # 4    normal     rainy  cool  False  yes
    # 5    normal     rainy  cool   True   no
    # 6    normal  overcast  cool   True  yes
    # 7      high     sunny  mild  False   no
    # 8    normal     sunny  cool  False  yes
    # 9    normal     rainy  mild  False  yes
    # 10   normal     sunny  mild   True  yes
    # 11     high  overcast  mild   True  yes
    # 12   normal  overcast   hot  False  yes
    # 13     high     rainy  mild   True   no
    
    #gini系数计算
    def gini(a):
        #计算每一个数出现的概率
        # probs=[]
        # for i in set(a):
        #     probs.append(count(i)/len(a))
        probs=[a.count(i)/len(a) for i in set(a)]
        gini=sum([p*(1-p) for p in probs])
        return gini
        # #test for function gini
    # a=['a', 'b', 'c', 'd', 'b', 'c', 'a', 'b', 'c', 'd', 'a']
    # print(gini(a))#0.743801652892562   
    
    #按特征进行划分
    def  spilt_framework(data,col):
        unique_value=data[col].unique()#找到同一特征下的不同值,并放入对应不同的列表
        result_dict={elem:pd.DataFrame for elem in unique_value}
    
        #根据关键字划分成两个不同的dataframe
        for k in result_dict.keys():
            result_dict[k]=data[:][data[col]==k]
        return result_dict
    #test
    # print(spilt_framework(data,'humility'))
    # {'high':    humility   outlook  temp  windy play
    # 0      high     sunny   hot  False   no
    # 1      high     sunny   hot   True   no
    # 2      high  overcast   hot  False  yes
    # 3      high     rainy  mild  False  yes
    # 7      high     sunny  mild  False   no
    # 11     high  overcast  mild   True  yes
    # 13     high     rainy  mild   True   no, 'normal':    humility   outlook  temp  windy play
    # 4    normal     rainy  cool  False  yes
    # 5    normal     rainy  cool   True   no
    # 6    normal  overcast  cool   True  yes
    # 8    normal     sunny  cool  False  yes
    # 9    normal     rainy  mild  False  yes
    # 10   normal     sunny  mild   True  yes
    # 12   normal  overcast   hot  False  yes}
    
    #对每个子空间计算每个特征对应下的gini数,数值最小即为最优的特征
    #返回最小gini值,特征,划分好的空间值
    def choose_best_col(data,label):
        #计算gini系数
        gini_D=gini(data[label].tolist())
        #每个子空间中再根据最优特征进行划分
        cols=[col for col in data.columns if col not in [label]]
        min_value,best_col=999,None
        min_splited=None
        for col in cols:
            #按每一个特征进行划分
            splited_set=spilt_framework(data,col)
            gain_DA=0
            #大特征给定的条件概率下,计算每个特征的gini
            for subset_col,subset in splited_set.items():
                gini_Di=gini(subset[label].tolist())#计算每个子块的gini
                #计算给定特征的条件gini
                gini_DA=len(subset)/len(data)*gini_Di
    
            if gini_DA<min_value:
                min_value,best_col=gini_DA,col
                min_splited=splited_set
            return min_value,best_col,min_splited
    # example:
    # print(choose_best_col(data,'play'))
    # (0.12244897959183676, 'humility', {'high':    humility   outlook  temp  windy play
    # 0      high     sunny   hot  False   no
    # 1      high     sunny   hot   True   no
    # 2      high  overcast   hot  False  yes
    # 3      high     rainy  mild  False  yes
    # 7      high     sunny  mild  False   no
    # 11     high  overcast  mild   True  yes
    # 13     high     rainy  mild   True   no, 'normal':    humility   outlook  temp  windy play
    # 4    normal     rainy  cool  False  yes
    # 5    normal     rainy  cool   True   no
    # 6    normal  overcast  cool   True  yes
    # 8    normal     sunny  cool  False  yes
    # 9    normal     rainy  mild  False  yes
    # 10   normal     sunny  mild   True  yes
    # 12   normal  overcast   hot  False  yes})
    
    ##生成决策树
    class CartTree:
        #定义节点,初始化;连接
        class Node:
            def __init__(self, name):
                self.name = name
                self.connections = {}
    
            def connect(self, label, node):
                self.connections[label] = node
        #初始化
        def __init__(self, data, label):
            self.columns = data.columns
            self.data = data
            self.label = label
            self.root = self.Node("Root")
    
        def print_tree(self, node, tabs):
            print(tabs + node.name)#打印特征
            for connection, child_node in node.connections.items():
                print(tabs +"\t"+ "("+ str(connection) + ")")#打印特征值,\t为横向制表符,与前行留空格
                self.print_tree(child_node, tabs + "\t\t")#打印子节点
    
        def construct_tree(self):
            self.construct(self.root, "", self.data, self.columns)
    
        def construct(self, parent_node, parent_connection_label, input_data, columns):
            min_value, best_col, min_splited = choose_best_col(input_data[columns], self.label)#
    
            if not best_col:
                node = self.Node(input_data[self.label].iloc[0])#iloc[0]选取第一列
                parent_node.connect(parent_connection_label, node)
                return
    
            node = self.Node(best_col)
            parent_node.connect(parent_connection_label, node)
    
            new_columns = [col for col in columns if col != best_col]#层层筛选过的特征作为条件概率
            #递归生成决策树
            for splited_value, splited_data in min_splited.items():
                self.construct(node, splited_value, splited_data, new_columns)
    

    主程序

    data=pd.read_csv('example_data.csv')
    tree=CartTree(data,'play')
    tree.construct_tree()
    tree.print_tree(tree.root, " ")
    

    结果:

     Root
     	()
     		temp
     			(hot)
     				humility
     					(high)
     						outlook
     							(sunny)
     								windy
     									(False)
     										no
     									(True)
     										no
     							(overcast)
     								windy
     									(False)
     										yes
     					(normal)
     						outlook
     							(overcast)
     								windy
     									(False)
     										yes
     			(mild)
     				humility
     					(high)
     						outlook
     							(rainy)
     								windy
     									(False)
     										yes
     									(True)
     										no
     							(sunny)
     								windy
     									(False)
     										no
     							(overcast)
     								windy
     									(True)
     										yes
     					(normal)
     						outlook
     							(rainy)
     								windy
     									(False)
     										yes
     							(sunny)
     								windy
     									(True)
     										yes
     			(cool)
     				outlook
     					(rainy)
     						windy
     							(False)
     								humility
     									(normal)
     										yes
     							(True)
     								humility
     									(normal)
     										no
     					(overcast)
     						humility
     							(normal)
     								windy
     									(True)
     										yes
     					(sunny)
     						humility
     							(normal)
     								windy
     									(False)
     										yes
    
    Process finished with exit code 0
    
    
    展开全文
  • 二、Gini系数 1.Gini公式 2.Gini系数的取值解读 一、Theil指数 1.相关定义 Theil 指数又称锡尔指数,最早由 Theil 和 Henri 于 1967 年提出,用于衡量各地区之间经济发展水平的差异。Theil一般有两个指标:The...
  • 洛伦兹曲线4.Gini系数5.Lift曲线和Gain曲线6.总结 关于AUC、KS评价指标、洛伦兹曲线、Gini系数、Lift曲线和Gain曲线。在别人的博客里看到下面的一个小故事: 故事是这样的: ​ 首先,混淆矩阵是个元老,年龄最大...
  • 二、Gini系数补充 1.相关描述《省域居民收入基尼系数测算及其变动趋势分析》 2.相关公式 实际应用中常用的公式: 3.Gini系数估计之 核函数 一、GE指数 1.相关定义 《我国社会保障支出的地区差异分析》 GE ...
  • 树类算法之---决策树Cart树Gini系数就算原理。

    千次阅读 多人点赞 2019-05-23 18:16:55
    1.介绍 ID3树与CART树的区别: ID3算法中,选择的是信息增益来进行特征选择,信息增益大的特征优先选择。 而在C4.5中,选择的是信息增益比...GINI系数的计算公式: 假设有数据集D,定义GINI指数: GINI(D)=&T...
  • gini系数 lift指标 ROC AIC 2016.08.01回顾

    千次阅读 2016-08-03 10:26:11
    1、上午主要研究了gini系数的算法,关键点就是用梯形面积去近似曲线形成的面积,横轴是按照降序排列或升序排列的人,纵轴是bad rate,把bad rate的坐标的两两连接起来就可以得到若干梯形,计算这些梯形的面积之和,...
  • WOE和IV使用来衡量变量的预测能力,值越大,表示此变量的预测能力越强。 WOE=ln(累计正样本占比/累计坏样本占比) IV=(累计正样本占比-累计坏样本占比)*WOE 信息值(IV) ... KS和GINI系数用来...
  • 1.Gini系数 设pk为节点S包含的K个不同的类别的数据记录所占的比例,则结点S的基尼系数G(S)定义如下: 基尼系数位于[0,1]区间,数字越小表明区分度越大。一次划分的整体基尼系数等于划分得到的孩子节点的基尼...
  • GINI系数的计算

    千次阅读 2019-01-03 17:06:19
    GINI= (1/2 - n个梯形的面积)/(1/2)=1-1/10(2(x1+x2+……+x9+1)) 此公式的使用条件: 1.X轴数据要排序,按照由小到大的顺序排列; 2.梯形等高,距离一定要相等,按照数值进行10等分。   2.如果...
  • CART遇到连续变量时不纯度函数是 1.直接计算MSE? 2.连续变量离散化,在计算GINI系数啊? 请问是哪个啊?
  • 基尼gini系数-决策树

    2020-10-25 12:11:01
    CART树采用基尼系数分割,而不是信息增益。
  • 决策树决策树(Decision Tree)是在已知各种情况发生概率的...衡量指标:信息熵、gini系数;信息熵:衡量信息的不确定性或混乱程度的指标,信息不确定性越大,熵越大。(孤立系统的熵增原理)信息熵条件熵信息增益...
  • CART树为什么使用GINI系数

    千次阅读 2019-03-25 23:08:15
    1.ID3树与CART树的区别 ID3算法中,选择的是信息增益来进行特征选择,信息增益大的特征优先选择。 而在C4.5中,选择的是信息增益比来选择特征,以减少信息增益容易...GINI∗(D)=∑i=1kpk∗(1−pk)=1−∑i=1kpk2GIN...
  • KS值和GINI系数

    千次阅读 2018-11-20 20:06:26
    有效性指标中的区分能力指标: KS(Kolmogorov-Smirnov):KS用于模型风险区分能力进行评估,  指标衡量的是好坏样本累计...4. 计算出图中阴影部分面积,阴影面积占直角三角形ABC面积的百分比,即为GINI系数
  • 信息熵 条件熵 信息增益 信息增益比 GINI系数

    万次阅读 多人点赞 2016-05-24 10:30:55
    5.Gini系数 Gini系数是一种与信息熵类似的做特征选择的方式,可以用来数据的不纯度。在CART(Classification and Regression Tree)算法中利用基尼指数构造二叉决策树。 Gini系数的计算方式如下: Gini(D)=1−∑i=1...
  • 引言 大家在机器学习中经常会看到基尼系数的词汇,有时候在做比赛的时候,有些赛题的Scoring Metric就是基尼系数。...首先,我们先看一张从Wiki上找来的经典图片:Gini基尼系数是一个分布不平衡程度的...
  • 决策树Gini系数计算过程详细解答

    万次阅读 多人点赞 2019-02-21 15:30:46
    最近看了篇文章,关于决策树的基尼系数计算过程,很详细,也很完整; 文章出处:https://sefiks.com/2018/08/27/a-step-by-step-cart-decision-tree-example/ 收藏记录一下。 An algorithm can be transparent ...
  • 第二十四节决策树系列之分裂流程和Gini系数评估(3) 上一节中我们讲解了决策树的数学表达形式,本节的话我们讲解决策树的分裂流程以及分裂条件的评估。 我们基于决策树的递归表达式上: 就可以知道训练一颗决策...
  • 基于gini系数的决策树代码

    千次阅读 2018-08-13 15:20:57
    import gini import tree import operator from math import pow def cal_gini_index(data): total_sample=len(data) if total_sample==0: return 0 label_counts=label_unique_cnt(d...
  • Gini 系数与熵的关系

    千次阅读 2017-03-23 11:56:30
    从对数函数的泰勒级数展开,可进一步推出熵与基尼系数的一种近似等价关系。
  • 而在于1)你对完美等式分布的定义,以及2)基尼系数的标准化。首先,你将完美的平等分配定义为Q5*H5/2,这是五分之一收入和累积百分比(1.0)的一半。我不知道这个数字代表什么。其次,必须按完全相等分布下的面积进行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 402
精华内容 160
关键字:

gini系数