You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中计算MAE(平均绝对误差)及相关修正指标?

解决方案

这里是完全贴合你给出公式的代码实现:

import pandas as pd
from typing import Tuple

def information_loss(df: pd.DataFrame, df_protected: pd.DataFrame) -> Tuple[float, float]:
    # 计算原始数据与受保护数据的MAE
    n, d = df.shape
    absolute_diff = df.subtract(df_protected).abs()
    mae = absolute_diff.sum().sum() / (n * d)
    
    # 计算相关矩阵的MAE-corr
    df_cor = df.corr()
    df_protected_cor = df_protected.corr()
    corr_absolute_diff = df_cor.subtract(df_protected_cor).abs()
    mae_corr = corr_absolute_diff.sum().sum() / (d ** 2)
    
    return mae, mae_corr

# 调用示例(假设你已定义df1和df1_noise_1)
mae_result, mae_corr_result = information_loss(df1, df1_noise_1)
print(f"MAE: {mae_result:.4f}")
print(f"MAE-corr: {mae_corr_result:.4f}")

关键步骤解释

  • 数据MAE计算:
    1. 用df.subtract(df_protected)计算两个数据框对应元素的差值,再通过.abs()取绝对值
    2. 两次调用.sum():第一次按列求和,第二次将所有列的总和相加,得到所有元素的绝对差总和
    3. 最后除以总元素数n*d(n为行数,d为列数),得到平均绝对误差
  • 相关矩阵MAE-corr计算:
    1. 分别对原始数据框和受保护数据框调用.corr(),生成各自的相关矩阵
    2. 重复差值取绝对值、求和的操作,得到相关矩阵元素的绝对差总和
    3. 最后除以相关矩阵的总元素数d²(相关矩阵为d×d维度),得到MAE-corr
  • 函数通用性优化:替换原代码中的全局变量为函数参数,让函数可以复用在任意一对原始/受保护数据框上

内容的提问来源于stack exchange,提问作者Geralt_P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 23:15:34