def evaluate_model(predictions, probs, train_predictions, train_probs):
"""Compare machine learning model to baseline performance.
baseline average error is compared to baseline performance.
Computes statistics and shows ROC curve.
"""
baseline = {}
baseline['recall'] = recall_score(test_labels,
[1 for _ in range(len(test_labels))], average='micro')
baseline['precision'] = recall_score(test_labels,
[1 for _ in range(len(test_labels))],average='micro')
baseline['roc'] = 0.5
results = {}
results['recall'] = recall_score(test_labels, predictions, average='micro')
results['precision'] = precision_score(test_labels, predictions, average='micro')
results['roc'] = roc_auc_score(test_labels, probs, average='micro', multi_class='ovo')
train_results = {}
train_results['recall'] = recall_score(train_labels, train_predictions, average='micro')
train_results['precision'] = precision_score(train_labels, train_predictions, average='micro', multi_class='ovr')
train_results['roc'] = roc_auc_score(train_labels, train_probs, average='micro', multi_class='ovr')
for metric in ['recall', 'precision', 'roc']:
print(f'{metric.capitalize()} Baseline: {round(baseline[metric], 2)} Test: {round(results[metric], 2)} Train: {round(train_results[metric], 2)}')
base_fpr, base_tpr, _ = roc_curve(feature_list, [1 for _ in range(len(test_labels))])
model_fpr, model_tpr, _ = roc_curve(feature_list, probs)
plt.figure(figsize=(8, 6))
plt.rcParams['font.size'] = 16
plt.plot(base_fpr, base_tpr, 'b', label='baseline')
plt.plot(model_fpr, model_tpr, 'r', label='model')
plt.legend()
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curves')
plt.show()
evaluate_model(rf_predictions, rf_probs, train_rf_predictions, train_rf_probs)
AxisError: axis 1 is out of bounds for array of dimension 1
- I am trying to get this model to work but on the line results['roc'] = roc_auc_score(test_labels, probs, multi_class='ovo') its states AxisError: axis 1 is out of bounds for an array of dimension 1, I am all out of ideas on how to get this to work