随机森林回归 - 我如何分析其表现? - 蟒蛇,sklearn

时间:2018-06-11 01:34:02

标签: python machine-learning scikit-learn regression random-forest

我正在努力评估我的随机森林的表现 - 我已经看过平均相对误差,但我不确定它是否是一个很好的指标。有什么需要检查的东西?

另外,我应该如何优化我的超参数? 我使用了 rf.score(X_test,y_test) R2,但在做回归时,这真的是我唯一应该依赖的东西吗?我查看了包的分数,但我不确定如何解释它们。

祝你的最佳状态是全局的,并且你的超参数得到优化:)

from sklearn.ensemble import RandomForestRegressor

rf = RandomForestRegressor(n_estimators = 1000,max_depth=5,random_state = 0)
rf.fit(X_train, y_train);

predictions = rf.predict(X_test)


errors = abs((predictions - y_test)/y_test)
print('Mean Relative Error:', round(np.mean(errors), 2)) 

3 个答案:

答案 0 :(得分:1)

对于回归模型(不要与分类器模型混淆),您可以从sklearn评估MAE,MSE,MAPE和RMSE:

import numpy as np
from sklearn import metrics

print('Mean Absolute Error (MAE):', metrics.mean_absolute_error(gt, pred))
print('Mean Squared Error (MSE):', metrics.mean_squared_error(gt, pred))
print('Root Mean Squared Error (RMSE):', np.sqrt(metrics.mean_squared_error(gt, pred)))
mape = np.mean(np.abs((gt - pred) / np.abs(gt)))
print('Mean Absolute Percentage Error (MAPE):', round(mape * 100, 2))
print('Accuracy:', round(100*(1 - mape), 2))

答案 1 :(得分:1)

为了从 answer 扩展 Igor Ezersky,在 scikit learn 中实现了更多用于模型和性能评估的函数。 documentation 中提供了所有评分参数的完整列表。此外,一些指标如 RMSE 和 MAPE 不再需要手动计算(scikit learn 版本 >= 0.24),因为它们是作为库函数实现的。此外,它们在防止错误(如零偏差)方面更加安全。

上述答案的扩展版本以及所有当前可用的回归指标可能如下所示:

from sklearn import metrics

y_true = [...] # Your real values / test labels
y_pred = [...] # The predictions from your ML / RF model

print('Mean Absolute Error (MAE):', metrics.mean_absolute_error(y_true, y_pred))
print('Mean Squared Error (MSE):', metrics.mean_squared_error(y_true, y_pred))
print('Root Mean Squared Error (RMSE):', metrics.mean_squared_error(y_true, y_pred, squared=False))
print('Mean Absolute Percentage Error (MAPE):', metrics.mean_absolute_percentage_error(y_true, y_pred))
print('Explained Variance Score:', metrics.explained_variance_score(y_true, y_pred))
print('Max Error:', metrics.max_error(y_true, y_pred))
print('Mean Squared Log Error:', metrics.mean_squared_log_error(y_true, y_pred))
print('Median Absolute Error:', metrics.median_absolute_error(y_true, y_pred))
print('R^2:', metrics.r2_score(y_true, y_pred))
print('Mean Poisson Deviance:', metrics.mean_poisson_deviance(y_true, y_pred))
print('Mean Gamma Deviance:', metrics.mean_gamma_deviance(y_true, y_pred))

如果您需要有关各个指标的更多信息,请查看 scikit learn User Guide

答案 2 :(得分:0)

您还可以添加以下两个指标:

from sklearn.metrics import accuracy_score, confusion_matrix

accuracy_score(my_class_column,my_forest_train_prediction)     confusion_matrix(my_test_data,my_prediction_test_forest)

还可以添加每个预测的概率:

my_classifier_forest.predict_proba(variable 1, variable n)