【问题标题】:Getting the MAE values of columns in pandas dataframe with last column使用最后一列获取 pandas 数据框中列的 MAE 值
【发布时间】:2023-01-10 01:58:50
【问题描述】:

如何使用最后一列计算 pandas Dataframe 中各列的 MAE:

,CPFNN,EN,Blupred,Horvath2,EPM,vMLP,Age
202,4.266596,3.5684403102704,5.2752761330328,5.17705043941232,3.30077613485548,3.412883,4.0
203,5.039452,5.1258136685894,4.40019825995985,5.03563327742846,3.97465334472661,4.140719,4.0
204,5.0227585,5.37207428128756,1.56392554883583,4.41805439337257,4.43779809822224,4.347523,4.0
205,4.796998,5.61052306552109,4.20912233479662,3.57075401779518,3.24902718889411,3.887743,4.0

我有一个熊猫数据框,我想创建一个列表,其中包含带有“年龄”的每一列的 mae 值。

有没有一种“熊猫”的方式来做到这一点,而不是仅仅为每一列做一个 for 循环?

from sklearn.metrics import mean_absolute_error as mae
mae(blood_bestpred_df["CPFNN"], blood_bestpred_df['Age'])

我想这样做:

mae(blood_bestpred_df[["CPFNN,EN,Blupred,Horvath2,EPM,vMLP"]], blood_bestpred_df['Age'])

但我有一个尺寸问题。

【问题讨论】:

    标签: python-3.x pandas scikit-learn statistics


    【解决方案1】:

    看起来 sklearn 的 MAE 要求两个输入具有相同的形状并且不进行任何广播(我不是 sklearn 专家,可能还有另一种解决方法)。您可以改用原始熊猫:

    import pandas as pd
    
    df = pd.read_clipboard(sep=",", index_col=0) # Your df here
    
    out = df.drop(columns="Age").sub(df["Age"], axis=0).abs().mean()
    

    出去:

    CPFNN       0.781451
    EN          1.134993
    Blupred     1.080168
    Horvath2    0.764996
    EPM         0.478335
    vMLP        0.296904
    dtype: float64
    

    【讨论】:

      猜你喜欢
      • 2014-10-11
      • 1970-01-01
      • 2023-01-20
      • 2022-10-13
      • 2019-09-03
      • 2023-02-07
      • 1970-01-01
      • 2019-04-07
      • 2021-09-05
      相关资源
      最近更新 更多