我试图建立一个回归模型来预测电影票房。数据集是从Kaggle TMDB 5000电影数据集中获取的,另一个数据集包含一些社交媒体相关属性。在
经过合并和清理,最终的数据集由183个观测值和53个特征组成。两个分类特征,类型和生产国家被扩展。例如,“动作”、“戏剧”、“喜剧”等新列,如果该电影属于该类型,则值为1。与生产国相同。在
我使用数据集构建回归模型,但遇到了一个问题。无论我使用训练-测试分离或交叉验证方法,或尝试不同的回归模型,我得到的RMSE都非常高。在
from sklearn.model_selection import cross_val_predict
X=movie.drop('Gross',axis=1)
y=movie['Gross']
print 'R2:',r2_score(y,cross_val_predict(RandomForestRegressor(),X,y,cv=10))
print 'RMSE:',np.sqrt(metrics.mean_squared_error(y,cross_val_predict(method,X,y,cv=10)))
output:
R2: 0.344831741145
RMSE: 76169019.1588
我不知道是什么因素导致了这种情况。有人能帮我吗?非常感谢。在
看来你计算的RMSE是正确的,我会检查R2测量值,并尝试手动进行,只是为了确定。在
但是如果我们检查下面的参考文献,我将尝试更详细地回顾这个概念:http://brenocon.com/rsquared_is_mse_rescaled.pdf
我们可以观察到
r2=1-毫秒(x,y)/VAR(y)
如果MSE->;0,则为RMSE->;0和r2->;1。在
但如果RMSE->;+inf,MSE->;+inf,如果MSE<;=VAR(y),这将导致r2值低于1,例如0.2、0.3等,因此您的结果可能会使您的分析走上正确的轨道。在
相关问题 更多 >
编程相关推荐