【问题标题】:How can I get Gini Coefficient in sklearn如何在 sklearn 中获得基尼系数
【发布时间】:2020-01-08 21:10:58
【问题描述】:

我想在 sklearn 包中,找到一类路径上每个特征的基尼系数 例如在虹膜数据中。如 Iris-virginica 花瓣长度 gini:0.4 ,花瓣宽度 gini:0.4.

【问题讨论】:

  • 你能发布你想找到基尼的数据吗?
  • from sklearn import datasets iris = datasets.load_iris() u 可以使用此码下载资料

标签: python scikit-learn gini


【解决方案1】:

你可以像这样用 Python+numpy 计算基尼系数:

from typing import List
from itertools import combinations

import numpy as np

def gini(x: List[float]) -> float:
    x = np.array(x, dtype=np.float32)
    n = len(x)
    diffs = sum(abs(i - j) for i, j in combinations(x, r=2))
    return diffs / (2 * n**2 * x.mean())

【讨论】:

  • 这是我见过的 Python 中最好的 Gini 实现之一 :-D。我喜欢它,因为那里有很多替代公式,但如果你环顾四周,这是你会在文献中看到的最一致和一致的基尼公式。问题是这个公式很难实现,而这里只有 4 行代码。做得好!! A+
  • 我可能说得太早了。我将其与其他一些工作(stackoverflow.com/questions/39512260/…)进行了比较,我想知道您是否在这里过度估计了 n。我们希望平均绝对差异,您的 n 是 > 您计算的平均绝对差异的数量(据我所见)。
猜你喜欢
  • 2015-07-22
  • 2023-04-03
  • 2017-01-23
  • 1970-01-01
  • 1970-01-01
  • 2018-04-02
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
相关资源
最近更新 更多