Python Pandas:从数据框计算RMSE的简单示例

时间:2016-12-26 09:17:38

标签: python pandas

需要一个使用Pandas DataFrame计算RMSE的简单示例。提供有循环真实和预测值的函数:

def fun (data):
   ...
   return trueVal, predVal

for data in set:
   fun(data)

然后一些代码将这些结果放在以下数据框中,其中x是实数值,p是预测值:

In [20]: d
Out[20]: {'p': [1, 10, 4, 5, 5], 'x': [1, 2, 3, 4, 5]}

In [21]: df = pd.DataFrame(d)

In [22]: df
Out[22]: 
    p  x
0   1  1
1  10  2
2   4  3
3   5  4
4   5  5

问题:

1)如何将fun函数的结果放在df数据框中?

2)如何使用df数据框计算RMSE?

2 个答案:

答案 0 :(得分:11)

问题1
这取决于数据的格式。我希望你已经拥有了你的真实值,所以这个函数只是一个传递。

问题2

使用pandas
((df.p - df.x) ** 2).mean() ** .5

使用numpy
(np.diff(df.values) ** 2).mean() ** .5

答案 1 :(得分:0)

问题1

我知道您已经有一个数据框df。要在新行中添加新值,请执行以下操作:

for data in set:

    trueVal, predVal = fun(data)

    auxDf = pd.DataFrame([[predVal, trueVal]], columns = ['p', 'x'])

    df.append(auxDf, ignore_index = True)

问题2

要使用df计算RMSE,建议您使用scikit学习功能。

from sklearn.metrics import mean_squared_error 
realVals = df.x
predictedVals = df.p
mse = mean_squared_error(realVals, predictedVals)
# If you want the root mean squared error
# rmse = mean_squared_error(realVals, predictedVals, squared = False)

非常重要的一点是,列中不能包含空值,否则它将不起作用