需要一个使用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?
答案 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)
非常重要的一点是,列中不能包含空值,否则它将不起作用