I noticed you are standardizing your dataset before your test/train split. This is an example of information leakage which is causing your model to overfit by learning the test example distribution: http://www.eggie5.com/97-model-evaluation-information-leakin...