I have a Dataframe which consists of some ML models with 2 columns for train & test accuracies respectively
evaluations_df
Out[13]:
Model train_accuracy test_accuracy
0 Logistic Regression 100.000000 86.956522
1 Decision Tree 99.065421 84.782609
2 Random Forest 92.523364 82.608696
3 Ada Boosting 100.000000 89.130435
4 Gradient Boosting 100.000000 84.782609
5 Nearest Neighbors 88.785047 82.608696
6 Support Vector Machine 93.457944 82.608696
7 Naive Bayes 99.065421 89.130435
And I want to plot in similar to to this:
Where the x value is the number of models where it’s ticks will be replaced by the model names, and the y value will be a pair of each accuracy metric.
I tried something like:
sns.histplot(data=evaluations_df, x=range(len(evaluations_df)), y=['train_accuracy', 'test_accuracy'],
color=['r', 'b'],
shrink=0.8,
multiple='dodge')
But it raises the following error:
ValueError: Length of list vectors must match length of `data` when both are used, but `data` has length 8 and the vector passed to `y` has length 2.
I don’t seem to be able to unpack the y values as a pair of bins with that list.
Advertisement
Answer
Without using seaborn and using just pandas you can do this:
evaluations_df.plot.bar(x='Model', y=['train_accuracy', 'test_accuracy'])
