基尼不純度

基尼不純度是用於決策樹編程中的一個專業術語。

基尼不純度,是指將來自集合中的某種結果隨機套用在集合中,某一數據項的預期誤差率。

是在進行決策樹編程的時候,對於混雜程度的預測中,一種度量方式。

基本介紹

  • 中文名:基尼不純度
  • 外文名:Gini impurity
公式,說明,示例代碼,

公式

IG(f)=∑i=1mfi(1−fi)=∑i=1mfi−∑i=1mf2i=1−∑i=1mf2i

說明

  • (1)基尼不純度越小,純度越高,集合的有序程度越高,分類的效果越好;
  • (2)基尼不純度為 0 時,表示集合類別一致;
  • (3)基尼不純度最高(純度最低)時,f1=f2=…=fm=1m,
    IG(f)=1−(1m)2×m=1−1m
例,如果集合中的每個數據項都屬於同一分類,此時誤差率為 0。如果有四種可能的結果均勻地分布在集合中,此時的誤差率為1−0.25=0.75;

示例代碼

# coding=utf-8#決策樹,基尼不純度,范芳銘#參考《集體智慧編程》my_data = [['fan', 'C', 'yes', 32, 'None'],           ['fang', 'U', 'yes', 23, 'Premium'],           ['ming', 'F', 'no', 28, 'Basic']]# 計算每一行數據的可能數量def uniqueCounts(rows):    results = {}    for row in rows:        # 對最後一列的值計算        #r = row[len(row) - 1]        # 對倒數第三的值計算,也就是yes 和no 的一列        r = row[len(row) - 3]        if r not in results: results[r] = 0        results[r] += 1    return results# 基尼不純度樣例def giniImpurityExample(rows):    total = len(rows)    print total    counts = uniqueCounts(rows)    print  counts    imp = 0    for k1 in counts:        p1 = float(counts[k1]) / total        print  counts[k1]        for k2 in counts:            if k1 == k2: continue            p2 = float(counts[k2]) / total            imp += p1 * p2    return impgini = giniImpurityExample(my_data)print 'gini Impurity is %s' % gini
運行結果:gini Impurity is 0.444444444444

相關詞條

熱門詞條

聯絡我們