You have a bit of class imbalance going on, with your largest class being about 50% larger than the others. You may also notice that your model gets that class right almost always, and there are so many of that class it could be inflating your scores.
I would sample that class down to about the size of the others and rerun. If the scores still come out good you might be all set. Validating your model with some previously unseen data after fitting should tell you what you need to know.
Your model may not be overfitting, but it is biased towards class 4. It's the prediction that is most often the correct one, and as a result is the source of most of your bad classifications (as seen in the confusion matrix). If predicting class 4 when it should be class 2 means someone wont't get a life-saving medical treatment, or it costs your company a million dollars every time, then the model is no good. If however having a small percentage of your predictions being wrong in this way is acceptable you should be good.
It is entirely possible your classes are distinct enough that it becomes trivial for the model to classify correctly, in which case very low error is possible. It wouldn't hurt to hold out some percentage of your data as validation data for post-modeling scoring. This would tell you the true story. If validation is good then you can deploy the model. If your prediction quality start slipping in the future it's likely due to data drift, where the distribution of values in your features don't match the ones used in training at which point you need to retrain the model.