基尼係數計算方法

2022-03-06 00:58:07 字數 2075 閱讀 3958

上圖

來自維基百科·自由的百科全書

最近在嘗試做一些流量調控的事情,流量對於任何商業系統都是寶貴的資源,不能任由他人無限制獲取,且需要通過一定手段加以調控,以期使用者體驗、平台生態、平台利益多方最大化。

這個目標是巨集大而美好的,但總要一步步慢慢來。先說如何平衡生態問題(當然指的是b端使用者),生態問題就像國民收入均衡問題一樣,常用的就是基尼係數,維基百科的中文鏈結要fq才能開啟,好傷心,英文的我這裡能開啟。這裡我並不要介紹概念和定義,只想把如何計算的方法貼上來。

最直觀的計算公式是:

含義就是:把所有人(假設剛好 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]

# 取最後乙個,也就是原陣列的和

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

得到下圖

當然還有很多其他的公式可以計算,比如:

基尼係數定義

matplotlib 繪圖中文亂碼

python 科學計算

決策樹的基尼係數計算過程

在介紹具體的計算之前,先從乙個例子入手吧。先看看下面這個資料,我們需要通過前三列的特徵來推斷出最後一列是yes,no chest pain good blood circulation blocked arteries heart disease nono nono yesyes yesyes ye...

Tangent Space的基向量計算方法

對於乙個normal texture的圖示,他裡面所有畫素上的normal vector都在u,v,n座標系上的,這也就是tangent space 當將乙個normal texture貼到mesh上後,單考慮乙個vertex,他對應於normal texture上的乙個點 具體在哪由這個verte...

決策樹 資訊熵 資訊增益 基尼係數

決策樹系列目錄 文末有彩蛋 決策樹 決策樹演算法原理 id3,c4.5,cart 決策樹 決策樹引數介紹 分類和回歸 決策樹 決策樹sklearn調參 gridsearchcv 決策樹 python 實現決策樹 決策樹應用例項 鐵達尼號分類 決策樹應用例項 使用者流失 模型 決策樹應用例項 銀行借貸...