I need to implement classical perceptron algorithm from scratch using numpy and pandas for an assignments.
I have done so using this algorithm:
I have a linearly seperable dataset of 568 rows and 30 columns. I am training the model on 67% of the data and testing on the remaining 33%.
I ran the algorithm on the raw data and even after the while loop runs 60k times there are ~25 misclassifications in the training data (should be zero).
Then I normalized the data using (x-mean(x))/std(x) [ Replacing each cell value using the mean and std of the column ] and this time the algorithm finished in just ~700 iterations of the while loop! [I got ~92% accuracy on the testing data for this.]
Is there any reason why it finished so quickly on the normalized data and is taking soooo much more time on the raw data?