精华内容
下载资源
问答
  • 决策树的基尼系数计算过程1、基尼指数的计算在介绍具体的计算之前,先从一个例子入手吧。先看看下面这个数据,我们需要通过前三列的特征来推断出最后一列是yes,no1、数据Chest PainGood Blood CirculationBlocked ...

    决策树的基尼系数计算过程

    1、基尼指数的计算

    在介绍具体的计算之前,先从一个例子入手吧。

    先看看下面这个数据,我们需要通过前三列的特征来推断出最后一列是yes,no

    1、数据

    Chest Pain

    Good Blood Circulation

    Blocked Arteries

    Heart Disease

    No

    No

    No

    No

    Yes

    Yes

    Yes

    Yes

    Yes

    Yes

    No

    No

    Yes

    No

    ???

    Yes

    etc…

    etc…

    etc…

    etc…

    2、统计

    Chest Pain

    true

    Heart Disease

    Yes:105

    No:39

    false

    Heart Disease

    Yes:34

    No:125

    Good Blood Circulation

    true

    Heart Disease

    Yes:37

    No:127

    false

    Heart Disease

    Yes:100

    No:33

    Blocked Arteries

    true

    Heart Disease

    Yes:92

    No:31

    false

    Heart Disease

    Yes:45

    No:129

    在统计数据的时候,若遇见缺失值,最简单的办法就是先跳过这个缺失值

    从统计的数据可以看出,在某一特征的条件下,无论是true或者false都有患有Heart Disease的人,同时也都有健康的人。且这两个分布是不同,有的true中患有Heart Disease的多一些,有的false中患有Heart Disease的多一些,则就要引出另一个概念—纯度。刚刚将的那种情况其实就是不纯的,那么我们接下来的操作就是对其不断的提纯。

    接下来引出基尼指数的概念:基尼指数遵循最小的准则,计算得到的基尼指数越小,则越纯。接下来则以该特征作为决策树的一个分支。但若当前节点的基尼指数小于待划分节点的基尼指数时,则不需要划分。

    3、基尼指数的基本公式

    Single_gini = 1 − ( a a + b ) 2 − ( b a + b ) 2 1-(\dfrac{a}{a+b})^2-(\dfrac{b}{a+b})^21−(a+ba​)2−(a+bb​)2

    Gini_Index = Single_gini_true * a + b a + b + c + d \dfrac{a+b}{a+b+c+d}a+b+c+da+b​ + Single_gini_false * c + d a + b + c + d \dfrac{c+d}{a+b+c+d}a+b+c+dc+d​

    4、上述例子的计算过程

    第一次分支

    Chest Pain

    Gini_index = 0.364

    Good Blood

    Gini_indx = 0.360

    Blocked Arteries

    Gini_index = 0.381

    有上面这些结果可知,我们第一次分叉应该选择Good Blood这个特征,因为前面我们提到,在同一情况下一个特征的基尼指数越小,其纯度也就越高,也就越具有代表性,分类的效果也就越好。上面三个例子相比较,我们应该选择Good Blood这个作为决策树的一个分支。

    第二次分支

    我们第一次是以Good Blood为分支的那么,假设选定该分支的true,那么其基尼指数,用上面的公式可以得到大概是0.35(false分支上的计算也是同理,这里我们只进行true分支上的基尼指数的计算)

    进行分支后我们对剩余的两个特征的值进行统计

    Chest Pain

    true

    Heart Disease

    Yes:13

    No:98

    false

    Heart Disease

    Yes:24

    No:29

    Blocked Arteries

    true

    Heart Disease

    Yes:24

    No:25

    false

    Heart Disease

    Yes:13

    No:102

    并在此基础上,我们进行第二次分支

    接下来来计算Chest Pain和Blocked Arteries这两类特征在Good Blood这类特征的分支下的基尼指数

    Chest Pain

    Gini_index = 0.3

    Blocked Arteries

    Gini_index = 0.29

    因为0.29<0.3<0.35,故我们选择Blocked Arteries作为 Good Blood的true分支下的一个分支节点

    第三次分支

    假设选定该分支的true,那么其基尼指数,用上面的公式可以得到大概是0.5

    进行分支后我们对剩余的特征的值进行统计

    Chest Pain

    true

    Heart Disease

    Yes:17

    No:3

    false

    Heart Disease

    Yes:7

    No:22

    并在此基础上,我们进行第三次分支

    接下来来计算Chest Pain这类特征在Blocked Arteries这类特征的分支下的基尼指数

    Chest Pain

    Gini_index = 0.33

    因为0.33<0.5,故我们选择Chest Pain作为Blocked Arteries的true分支下的一个分支节点

    但假如选定的分支是false,那么其基尼指数计算得到大概是0.2

    Chest Pain

    true

    Heart Disease

    Yes:7

    No:26

    false

    Heart Disease

    Yes:6

    No:76

    接下来来计算Chest Pain这类特征在Blocked Arteries这类特征的分支下的基尼指数

    Chest Pain

    Gini_index = 0.29

    因为0.29>0.2故该节点不需要分支,因为分支的目的是提纯,而提纯,则是选择使基尼指数变小的那个特征,而0.29>0.2基尼系数上升,没有达到提纯的目的,故不需要分支。

    学习视频:https://www.bilibili.com/video/BV17J411C7zZ?p=59

    展开全文
  • 基尼系数计算工具

    2013-07-28 12:41:37
    基尼系数计算小工具,源代码,算算你们那里的收入均衡情况
  • 决策树的基尼系数计算过程 1、基尼指数的计算 在介绍具体的计算之前,先从一个例子入手吧。 先看看下面这个数据,我们需要通过前三列的特征来推断出最后一列是yes,no 1、数据 Chest Pain Good Blood ...

    决策树的基尼系数计算过程

    1、基尼指数的计算

    在介绍具体的计算之前,先从一个例子入手吧。

    先看看下面这个数据,我们需要通过前三列的特征来推断出最后一列是yes,no

    1、数据

    Chest Pain Good Blood Circulation Blocked Arteries Heart Disease
    No No No No
    Yes Yes Yes Yes
    Yes Yes No No
    Yes No ??? Yes
    etc… etc… etc… etc…

    2、统计

    1. Chest Pain

      1. true

        Heart Disease

        1. Yes:105
        2. No:39
      2. false

        Heart Disease

        1. Yes:34
        2. No:125
    2. Good Blood Circulation

      1. true

        Heart Disease

        1. Yes:37
        2. No:127
      2. false

        Heart Disease

        1. Yes:100
        2. No:33
    3. Blocked Arteries

      1. true

        Heart Disease

        1. Yes:92
        2. No:31
      2. false

        Heart Disease

        1. Yes:45
        2. No:129

    在统计数据的时候,若遇见缺失值,最简单的办法就是先跳过这个缺失值

    从统计的数据可以看出,在某一特征的条件下,无论是true或者false都有患有Heart Disease的人,同时也都有健康的人。且这两个分布是不同,有的true中患有Heart Disease的多一些,有的false中患有Heart Disease的多一些,则就要引出另一个概念—纯度。刚刚将的那种情况其实就是不纯的,那么我们接下来的操作就是对其不断的提纯。

    接下来引出基尼指数的概念:基尼指数遵循最小的准则,计算得到的基尼指数越小,则越纯。接下来则以该特征作为决策树的一个分支。但若当前节点的基尼指数小于待划分节点的基尼指数时,则不需要划分。

    3、基尼指数的基本公式

    Single_gini = 1(aa+b)2(ba+b)21-(\dfrac{a}{a+b})^2-(\dfrac{b}{a+b})^2

    Gini_Index = Single_gini_true * a+ba+b+c+d\dfrac{a+b}{a+b+c+d} + Single_gini_false * c+da+b+c+d\dfrac{c+d}{a+b+c+d}

    4、上述例子的计算过程

    第一次分支

    1. Chest Pain

      Gini_index = 0.364

    2. Good Blood

      Gini_indx = 0.360

    3. Blocked Arteries

      Gini_index = 0.381

    有上面这些结果可知,我们第一次分叉应该选择Good Blood这个特征,因为前面我们提到,在同一情况下一个特征的基尼指数越小,其纯度也就越高,也就越具有代表性,分类的效果也就越好。上面三个例子相比较,我们应该选择Good Blood这个作为决策树的一个分支。

    第二次分支

    我们第一次是以Good Blood为分支的那么,假设选定该分支的true,那么其基尼指数,用上面的公式可以得到大概是0.35(false分支上的计算也是同理,这里我们只进行true分支上的基尼指数的计算)

    进行分支后我们对剩余的两个特征的值进行统计

    1. Chest Pain

      1. true

        Heart Disease

        1. Yes:13
        2. No:98
      2. false

        Heart Disease

        1. Yes:24
        2. No:29
    2. Blocked Arteries

      1. true

        Heart Disease

        1. Yes:24
        2. No:25
      2. false

        Heart Disease

        1. Yes:13
        2. No:102

    并在此基础上,我们进行第二次分支

    接下来来计算Chest Pain和Blocked Arteries这两类特征在Good Blood这类特征的分支下的基尼指数

    1. Chest Pain

      Gini_index = 0.3

    2. Blocked Arteries

      Gini_index = 0.29

    因为0.29<0.3<0.35,故我们选择Blocked Arteries作为 Good Blood的true分支下的一个分支节点

    第三次分支

    假设选定该分支的true,那么其基尼指数,用上面的公式可以得到大概是0.5

    进行分支后我们对剩余的特征的值进行统计

    1. Chest Pain

      1. true

        Heart Disease

        1. Yes:17
        2. No:3
      2. false

        Heart Disease

        1. Yes:7
        2. No:22

    并在此基础上,我们进行第三次分支

    接下来来计算Chest Pain这类特征在Blocked Arteries这类特征的分支下的基尼指数

    1. Chest Pain

      Gini_index = 0.33

    因为0.33<0.5,故我们选择Chest Pain作为Blocked Arteries的true分支下的一个分支节点

    但假如选定的分支是false,那么其基尼指数计算得到大概是0.2

    1. Chest Pain

      1. true

        Heart Disease

        1. Yes:7
        2. No:26
      2. false

        Heart Disease

        1. Yes:6
        2. No:76

    接下来来计算Chest Pain这类特征在Blocked Arteries这类特征的分支下的基尼指数

    1. Chest Pain

      Gini_index = 0.29

    因为0.29>0.2故该节点不需要分支,因为分支的目的是提纯,而提纯,则是选择使基尼指数变小的那个特征,而0.29>0.2基尼系数上升,没有达到提纯的目的,故不需要分支。

    学习视频:https://www.bilibili.com/video/BV17J411C7zZ?p=59

    展开全文
  • 基尼系数计算程序.txt

    2015-06-18 22:20:13
    此程序为计算基尼系数的快捷程序,内容翔实,语句简练,可供广大学生和科技工作者学习使用,当然还会有许多不足,望指正
  • 基尼系数计算方法

    千次阅读 2017-12-16 20:22:00
    上图 图片来自维基百科·自由的百科全书 ...先说如何平衡生态问题(当然指的是B端用户),生态问题就像国民收入均衡问题一样,常用的就是基尼系数,维基百科的中文链接要FQ才能打开,好伤心,英文的我...

    上图
    1244979-20171216201849889-1334466130.png

    图片来自维基百科·自由的百科全书

    最近在尝试做一些流量调控的事情,流量对于任何商业系统都是宝贵的资源,不能任由他人无限制获取,且需要通过一定手段加以调控,以期用户体验、平台生态、平台利益多方最大化。

    这个目标是宏大而美好的,但总要一步步慢慢来。先说如何平衡生态问题(当然指的是B端用户),生态问题就像国民收入均衡问题一样,常用的就是基尼系数,维基百科的中文链接要FQ才能打开,好伤心,英文的我这里能打开。这里我并不要介绍概念和定义,只想把如何计算的方法贴上来。

    最直观的计算公式是:

    1244979-20171216203151124-1505368724.png

    含义就是:把所有人(假设刚好 100 个人)的收入从小到大排序,然后从收入最少的开始累计,每计算一个人,横坐标为人数累计值占总人数比例,纵坐标为收入累计值占总收入比例,直到最后一个收入最大的人。

    显然,图中横坐标和纵坐标都是 [ 0 -1 ] 之间。把图左下角和右上角连起来,表示人数累计占比恒等于收入累积占比,意味着收入完全均等。

    好了,上面人人收入均等的线与实际收入曲线之间的面积就是 A, 实际收入曲线与 X 轴之间面积是 B

    知道怎么算了,于是拿代码试试:

    # coding=utf-8
    # !/usr/bin/python
    from scipy.integrate import odeint
    import numpy as np
    from matplotlib import pyplot as pl
    
    # 解决matplotlib 中文显示问题
    pl.rcParams['font.sans-serif'] = ['SimHei']
    pl.rcParams['axes.unicode_minus'] = False
    
    fig, ax = pl.subplots()
    
    # 计算基尼系数的简单方法
    def gini():
        # 计算数组累计值,从 0 开始
        wealths = [1.5, 2, 3.5, 10, 4.2, 2.1, 1.1, 2.2, 3.1, 5.1, 9.5, 9.7, 1.7, 2.3, 3.8, 1.7, 2.3, 5, 4.7, 2.3, 4.3, 12]
        cum_wealths = np.cumsum(sorted(np.append(wealths, 0)))
        # 取最后一个,也就是原数组的和
        sum_wealths = cum_wealths[-1]
        # 人数的累积占比
        xarray = np.array(range(0, len(cum_wealths))) / np.float(len(cum_wealths) - 1)
        # 均衡收入曲线
        upper = xarray
        # 收入累积占比
        yarray = cum_wealths / sum_wealths
        # 绘制基尼系数对应的洛伦兹曲线
        ax.plot(xarray, yarray)
        ax.plot(xarray, upper)
        ax.set_xlabel(u'人数累积占比')
        ax.set_ylabel(u'收入累积占比')
        pl.show()
        # 计算曲线下面积的通用方法
        B = np.trapz(yarray, x=xarray)
        # 总面积 0.5
        A = 0.5 - B
        G = A / (A + B)
        print G
    

    得到下图

    1244979-20171216200906999-1988143018.png


    其他

    当然还有很多其他的公式可以计算,比如:

    1244979-20171216202119061-1910345819.png

    参考

    1. https://en.wikipedia.org/wiki/Gini_coefficient 基尼系数定义
    2. https://www.zhihu.com/question/25404709 matplotlib 绘图中文乱码
    3. http://hyry.dip.jp/tech/book/page/scipynew/scipy-710-integrate.html python 科学计算

    转载于:https://www.cnblogs.com/longwind09/p/8047539.html

    展开全文
  • 数据框“global_df”的形式...size=3) #基尼系数计算 global_gini.ex() global_gini.im() for (i in c(1:10)) { y=2006+i global_gini.ex[i](global_df[year==y,]$ex_s) global_gini.im[i](global_df[year==y,]$im_s) }

    数据框“global_df”的形式为:
    主要绘制数据框的第四列和第六列,进出口贸易量的累加占比

    load("global_df.Rdata")
    load("bs_df.Rdata")
    library(ggplot2)
    library(gridExtra)
    p_g<-ggplot(data=global_df)+theme_bw()+theme( panel.grid =element_blank(),
                                                  title = element_text(size=11,family = "STKaiti"), 
            
                                                 axis.title=element_text(size=10,family ="STKaiti"), 
                                                 axis.text=element_text(size=9,face= "bold"),
                                                 plot.margin = unit(c(0.5,3.5,0.5,3.5),"mm")
                                                 )+scale_y_continuous(limits=c(0,1),expand=c(0,0))+scale_x_continuous(limits=c(1,199),expand=c(0,0))
    
    p_g<-p_g+geom_point(aes(x=num,y=ex_s_p),color='blue',size=1.5)
    p_g<-p_g+geom_point(aes(x=num,y=im_s_p),color='yellow',size=1.5)
    p_g<-p_g+geom_line(aes(x=num,y=1/198*num-1/198),color='red',size=1.2,linetype='dashed')
    p_g<-p_g+xlab("国家数目")+ylab("贸易额/总量")+geom_line(aes(x=rep(c(25,40),1990/2),y=rep(c(0.75,0.75),1990/2)),linetype=1,color='blue',size=1.2)
    p_g<-p_g+geom_text(aes(x=57,y=0.7,label="出口,<Gini>=0.77"),family="STKaiti",size=3)+geom_line(aes(x=rep(c(25,40),1990/2),y=rep(c(0.65,0.65),1990/2)),linetype=1,color='yellow',size=1.2)+geom_text(aes(x=57,y=0.6,label="进口,<Gini>=0.73"),family="STKaiti",size=3)
    
    num=-c(1:10)+200
    num1=num
    num1[6]=185
    num1[9]=180
    name=as.character(id_global$country)[num]
    im_global_vec<-global_df[global_df$year=="2014",]$im_s_p[num]
    top10<-data.frame(num=num,num1=num1,name=name,im=im_global_vec)
    p_g<-p_g+geom_point(data=top10,aes(x=num,y=im),pch=18,color="red",size=2)+
      geom_text(data=top10,aes(x=num1-5,y=im-0.01,label=name),size=2.5,family="STKaiti")+
      geom_point(aes(x=65/2,y=0.8),pch=18,color="red",size=2)+geom_text(aes(x=88,y=0.8,label="核心国家(地区)"),family="STKaiti",size=3)
    
    

    在这里插入图片描述

    #基尼系数计算
    global_gini.ex<-c()
    global_gini.im<-c()
    for (i in c(1:10))
    {
      y=2006+i
      global_gini.ex[i]<-ineq(global_df[year==y,]$ex_s)
      global_gini.im[i]<-ineq(global_df[year==y,]$im_s)
    }
    
    展开全文
  • 查了点资料,做个笔记: 在CART中用: 2、我们常见的表达式都是 1 + 2 * 3 - 5/6 这种,称为中缀(运算符在操作数之间) ...前缀表达式又叫波兰表达式,后缀表达式又叫逆波兰表达式 ...后缀表达式,指的是不包含括号...
  • 洛伦茨曲线和基尼系数 1905年,统计学家洛伦茨提出了洛伦茨曲线,如图一。将社会总人口按收入由低到高的顺序平均分为10个等级组,每个等级组均占10%的人口,再计算每个组的收入占总收入的比重。然后以人口累计...
  • 基尼系数直接计算

    2020-11-07 11:20:14
    关于基尼系数。老师说计算公式还有更直接的,只需给出一组数,就可以计算它们的基尼系数。已毕业的同学曾找到有这个程序。 大佬求帮忙
  • 基尼系数和洛伦兹曲线,在表示数据的不平均方面特别是财富的不平均上被广泛应用。但是目前在python里面并没有找到很好的可以直接绘制洛伦兹曲线的函数,由于目前项目用到,也就在实际应用中使用... 基尼系数计算3. ...
  • 基尼系数计算与分解方法比较分析,赵光华,,:基尼系数计算方法,比较有代表性的方法有直接计算法、回归曲线法、等分法和人口分组法等;基尼系数分解方法有人口分组分解法
  • 基于GIS的基尼系数动态计算方法研究,杨鑫,李志建,基尼系数的应用越来越广泛,对其快速计算的方法改进成为一个重要问题。传统的基于数据库计算基尼系数的方法因其选择评价范围及指
  • 用Python实现基尼系数计算

    千次阅读 2020-08-10 14:28:36
    用Python实现基尼系数计算
  • 基尼系数的手工计算

    2020-08-27 11:11:26
    基尼系数通常衡量一个国家或地区居民收入差距的常用指标。同样基尼系数也可以衡量影响因素差距的目标。 基尼系数衡量一个某些因素差距的常用指标。基尼系数介于0-1之间,基尼系数越大,表示不平等程度越高。 第...
  • 1.实现了基尼系数(洛伦茨系数)的自动计算,利用excel自带的基本公式。 2.附详细计算步骤说明,便于理解公式。 3.自己仔细整理的东西,易懂、易上手。
  • 基尼系数,excel计算方法

    千次阅读 2021-01-30 18:41:11
    我真的是个计算基尼系数的小能手,在excel、python、hive上都凑齐了。。。 excel如下图所示: 第一行显示的是,该列标黄色框内的公式。
  • 基尼系数

    千次阅读 2019-05-23 08:13:09
     2)实例计算基尼系数 3 种情况计算基尼系数基尼系数的性质与信息熵一样:度量随机变量的不确定度的大小; G 越大,数据的不确定性越高; G 越小,数据的不确定性越低; G = 0,数据集中的所有样本都是...
  • 基尼系数计算原理

    千次阅读 2015-03-22 22:07:46
    基尼指数( Gini Index )是20世纪初经济学家基尼定义的指标,最为知名的应用是考察居民收入的差异情况。 居民收入的情况符合幂指函数( Power Law )分布,最直观(但非准确)的理解就是 80/20 原则,也...
  • 决策树CART算法——基尼系数 决策树的CART算法使用基尼系数来选择划分属性。一个数据集的纯度可以用基尼系数来度量 Gini(D)=∑k=1∣y∣∑k′≠kpkpk′=1−∑k=1∣y∣pk2\begin{aligned}Gini(D) = \sum_{k=1}^{|y|}\...
  • 二、基尼系数计算公式 基尼指数的计算公式为: 三、计算示例 我们分别来计算一下决策树中各个节点基尼系数: 以下excel表格记录了Gini系数的计算过程。 我们可以看到,GoodBloodCircle的基尼系数是最小的,也...
  • 基尼系数分解和算法

    2018-09-15 07:15:03
    计算基尼系数,通过对于基尼系数的算法了解在各个计算环节
  • 使用Python计算基尼系数

    千次阅读 2019-12-19 15:03:49
    import numpy as np def gini(data_list): '''获得列表中的gini系数''' data_length = len(data_list) total_sum = np.sum(data_list) total_gini = 0 for i in range(data_length): temp_deno...
  • stata基尼系数算法

    2017-11-27 19:10:27
    基尼系数作为经济研究中一个重要指标,其计算用代码较为简便。这是用stata来计算基尼系数的指导说明,其中包括代码和数据。
  • 区位基尼系数

    2020-12-04 20:50:06
    这一期先讲区位基尼系数计算方法及其实现函数,后几期再陆续介绍泰尔指数和EG指数。 用Excel算区位基尼系数,尽管也可实现,但非常笨拙,而且可重复性差。然而,其计算方法是非常简单的,用R语言写一个函数来实现...
  • 代码实现 套用公式: def gini(a: int, b: int) -> float: return 1-pow(a/(a+b), 2)-pow(b/(a+b), 2) def gini_total(a: int, b: int, c: int, d: int) -> float: return (a+b)/(a+b+c+d) * gini(a, b) +...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 191
精华内容 76
关键字:

基尼系数计算