Data normalization before or after train-test split?
Normalization across instances should be done after splitting the data between training and test set, using only the data from the training set. 

This is because the test set plays the role of fresh unseen data, so it's not supposed to be accessible at the training stage. Using any information coming from the test set before or during training is a potential bias in the evaluation of the performance.