I think may be able to help, but you're not wrong; your dataset is small. That is likely the main reason why accuracy isn't satisfactory. However, sense lack of data is an issue we can interpolate or use synthetic data generation like SMOTE.
With such limited features it might make sense to use an unsupervised learning approach like clustering to create new features and better represent an underlying pattern.
In short, the solution lies is preprocessing.