python-3.x 获取Pandas Dataframe 中最后一列的MAE值

iswrvxsc  于 2023-01-10  发布在  Python
关注(0)|答案(1)|浏览(136)

如何计算最后一列在Pandas数据框中的列的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

我有一个Pandas Dataframe ,我想创建一个列表与mae值的每列与"年龄"。
有没有一种"Pandas"的方式来完成这个任务,而不是仅仅对每列执行一个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'])

但我有尺寸问题。

t3irkdon

t3irkdon1#

看起来sklearn的MAE要求两个输入都是相同的形状,并且不做任何广播(我不是sklearnMaven,可能有另一种方法可以解决这个问题)。

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

相关问题