我正在努力评估我的随机森林的表现 - 我已经看过平均相对误差,但我不确定它是否是一个很好的指标。有什么需要检查的东西?
另外,我应该如何优化我的超参数?
我使用了 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))
答案 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)