轧制精度

Rolling Precision

我有一个包含二进制预测(data['ypred'] 为 1 或 0)和实际实现(data['y'])的数据框,我想编写一个函数计算最后 n 个值(数据已经按日期排序)的滚动精度(即所有预测中正确预测的百分比)。下面是最后 2 个观察的示例(注意第一行是 NA,最后一行是 50%,因为 2 个中只有 1 个是正确的):

 dict = [{'ypred': '1','y': '1','rolWinProb': 'NA'},
 {'ypred': '1','y': '1','rolWinProb': '100'},
 {'ypred': '0','y': '1','rolWinProb': '100'},
 {'ypred': '0','y': '1','rolWinProb': '100'},
 {'ypred': '1','y': '0','rolWinProb': '50'}]

 data = pd.DataFrame(dict)

任何人都可以提出一个方法吗?

也许是这样的:

data[(data['y'] ==1 ) & (data['ypred']==1)].rolling(10)

不确定,你从哪里得到你的价值观,但你可以做什么:

N=2
data["rollwinprob"]=data["ypred"].eq(data["y"]).rolling(N).mean().mul(100)

参考。 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rolling.html