【发布时间】:2018-06-03 17:35:25
【问题描述】:
我有一个如下表:
Type Actual Predicted
A 4 3
A 10 18
A 13 11
B 3 10
B 4 2
B 8 33
C 20 17
C 40 33
C 87 80
C 32 30
我想计算每种类型的 R^2 和 RMSE。执行此操作的代码如下:
import numpy as np
import pandas as pd
from sklearn.metrics import r2_score, mean_squared_error
def r2_rmse( g ):
r2 = r2_score( g['Actual'], g['Predicted'] )
rmse = np.sqrt( mean_squared_error( g['Actual'], g['Predicted'] ) )
return pd.Series( dict( r2 = r2, rmse = rmse ) )
your_df.groupby( 'Type' ).apply( r2_rmse ).reset_index()
样本输出表(值是假设的):
Type R^2 RMSE
A 0.66 4
B 1.00 6
C 0.03 1
上面的代码工作并给了我想要的输出。但现在我想在类型级别的表中添加置信/预测区间。我确实在互联网上搜索了如何在没有运气的情况下做到这一点。
概念问题:如果我想要以 95% 的置信度捕获实际值的值范围,我是在实际列还是预测列上运行置信区间?
下面是我想要的样表:
Type Conf_Int_90% Conf_Int_80%
A (21, 100) (5, 55)
B (10, 46) (3, 14)
C (1, 19) (12, 19)
我感觉置信区间代码是这样的:
st.t.interval(0.95, len(a)-1, loc=np.mean(a), scale=st.sem(a)) BUT ...
我将哪些特定代码合并到现有代码中(如上所示),以便获得我想要的表格输出?
【问题讨论】:
标签: python pandas numpy scikit-learn intervals