Jul*_*lia 11 python regression machine-learning random-forest scikit-learn
我正在努力评估随机森林的性能 - 我已经查看了平均相对误差,但我不确定这是否是一个好的指标。需要检查哪些事项?
另外,我应该如何优化我的超参数?我使用过 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))
Run Code Online (Sandbox Code Playgroud)
Iha*_*ski 12
对于回归模型(不要与分类器模型混淆),您可以通过以下方式评估 MAE、MSE、MAPE 和 RMSE sklearn:
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))
Run Code Online (Sandbox Code Playgroud)
为了扩展Igor Ezersky的答案,scikit learn 中实现了更多用于模型和性能评估的功能。文档中提供了所有评分参数的完整列表。此外,一些指标(例如 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))
Run Code Online (Sandbox Code Playgroud)
如果您需要有关各个指标的更多信息,请查看scikit learn 用户指南。
小智 -3
您还可以添加这两个指标:
from sklearn.metrics import accuracy_score, confusion_matrix
Run Code Online (Sandbox Code Playgroud)
准确度分数(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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19699 次 |
| 最近记录: |