Utilice Python para calcular la varianza y la divergencia JS en diferentes dimensiones de un conjunto de datos

En el campo de la minería de datos, a menudo necesitamos medir las diferencias o similitudes entre diferentes dimensiones. Para lograr esto, a menudo es necesario utilizar varios métodos para calcular la diferencia entre dos muestras. Por ejemplo, se pueden utilizar métodos como la prueba KS y la entropía relativa para comparaciones de variables continuas.

Este artículo presentará cómo usar Python y la biblioteca Pandas para calcular la varianza y la divergencia JS en diferentes dimensiones en el conjunto de datos para evaluar la fluctuación de los cambios en cada dimensión.

Código:

Primero, defina una función JS_divergence() para calcular la divergencia JS entre dos distribuciones:

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)

A continuación, defina una función Compute_metrics() para calcular la varianza y la divergencia JS bajo la dimensión especificada:

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]

Luego almacenamos los datos en un marco de datos de Pandas y calculamos la varianza y la divergencia JS para cada dimensión usando la función Compute_metrics() anterior:

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']))

Finalmente, obtuvimos los indicadores de varianza y divergencia JS para cada dimensión.

Resumir:

Este artículo describe cómo utilizar Python y la biblioteca Pandas para calcular la varianza y la divergencia JS en diferentes dimensiones de un conjunto de datos. Estos indicadores se pueden utilizar para evaluar la fluctuación de los cambios en cada dimensión, logrando así propósitos como la extracción de dimensiones anormales y el análisis de datos. ¡Espero que inspire a todos!

Supongo que te gusta

Origin blog.csdn.net/weixin_44976611/article/details/130955024
Recomendado
Clasificación