欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python 計算增益率

錢浩然2年前12瀏覽0評論

Python是一種高級編程語言,它具有簡單易學(xué)的特點。Python在數(shù)據(jù)分析和機(jī)器學(xué)習(xí)領(lǐng)域中使用廣泛。其中,計算增益率是一個很常見的需求。在Python中,我們可以使用SciPy庫中的entropy函數(shù)來計算增益率。

from scipy.stats import entropy
def gain_ratio(data, split_attribute_name, target_attr_name):
# 計算數(shù)據(jù)集的熵
total_entropy = entropy(data[target_attr_name].value_counts(normalize=True), base=2)
# 計算數(shù)據(jù)集相對于分割屬性的熵
vals, counts = np.unique(data[split_attribute_name], return_counts=True)
weighted_entropy = np.sum(
[(counts[i]/np.sum(counts)) * entropy(
data.where(data[split_attribute_name] == vals[i])
.dropna()[target_attr_name]
.value_counts(normalize=True),
base=2) for i in range(len(vals))])
# 計算分割屬性的熵
attribute_entropy = entropy(data[split_attribute_name].value_counts(normalize=True), base=2)
# 返回增益率
try:
gain_ratio = (total_entropy - weighted_entropy)/attribute_entropy
except ZeroDivisionError:
gain_ratio = 0.0
return gain_ratio

在這個函數(shù)中,我們傳入三個參數(shù):數(shù)據(jù),分割屬性的名稱和目標(biāo)屬性的名稱。我們使用numpy庫中的unique函數(shù)獲取分割屬性的不同值和每個值出現(xiàn)的次數(shù)。我們對每個值使用數(shù)據(jù)集的子集計算其相對于目標(biāo)屬性的熵,并按權(quán)重相加。計算完加權(quán)熵之后,我們使用總熵與加權(quán)熵的差除以分割屬性的熵計算增益率。

增益率越高,說明分割屬性對分類結(jié)果的影響越大。