共计 1224 个字符,预计需要花费 4 分钟才能阅读完成。
在数据挖掘畛域中,咱们常常须要掂量不同维度之间的差别或类似度。为了实现这一指标,通常须要应用各种办法来计算两个样本之间的差别。例如,KS 测验和绝对熵等办法能够用于连续变量的比拟。
本文将介绍如何应用 Python 和 Pandas 库来计算数据集中不同维度下的方差和 JS 散度,以评估各维度变动的稳定大小。
代码实现:
首先,定义一个函数 JS_divergence() 来计算两个散布之间的 JS 散度:
import scipy.stats as ss
def JS_divergence(p, q, base):
M = (p+q)/2
return 0.5 * ss.entropy(p, M, base=base) + 0.5 * ss.entropy(q, M, base=base)
接下来,定义一个函数 compute_metrics() 来计算指定维度下的方差和 JS 散度:
import pandas as pd
import numpy as np
def compute_metrics(df, dim):
var = np.var(df.query(f"dimension =='{dim}'")['pred'] - df.query(f"dimension == '{dim}'")['actual'])
js_div = JS_divergence(df.query(f"dimension =='{dim}'")['pred'], df.query(f"dimension == '{dim}'")['actual'], 2)
return [var, js_div]
而后,咱们将数据存储在一个 Pandas 数据框中,并应用上述函数 compute_metrics() 对每个维度计算方差和 JS 散度:
lists = [['散发模块','精选', 100000,85000]
,['散发模块','关注', 20000,10000]
,['散发模块','发现', 1000,1500]
,['用户分类','儿童', 2000,2000]
,['用户分类','青年', 30000,19500]
,['用户分类','中年', 69000,50000]
,['用户分类','老年', 20000,25000]
]
df = pd.DataFrame(lists, columns=['dimension', 'indicator', 'pred', 'actual'])
# 计算方差和 JS 散度
metrics = {}
for dim in df['dimension'].unique():
metrics[dim] = compute_metrics(df, dim)
print(pd.DataFrame(metrics, index=['Var', 'JS_Div']))
最初,咱们失去了各维度下的方差和 JS 散度指标。
总结:
本文介绍了如何应用 Python 和 Pandas 库计算数据集中不同维度下的方差和 JS 散度。这些指标能够用于评估各维度变动的稳定大小,从而实现异样维度开掘和数据分析等目标。心愿对大家有启发!
本文由 mdnice 多平台公布
正文完