Accuracy of the model I'm using this dataset and i'm trying to do logistic regression

heart_data = pd.read_csv('../input/heart-disease-uci/heart.csv')
X = heart_data.iloc[:,:-1]
y = heart_data.iloc[:,-1]
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.20,random_state=5,shuffle=True)

from sklearn.preprocessing import MinMaxScaler

nr = MinMaxScaler()
X_train = nr.fit_transform(X_train)
X_test = nr.transform(X_test)

from sklearn.metrics import accuracy_score

def cal(method,c=1):
    lr = LogisticRegression(C=c,solver=method)
    lr.fit(X_train,y_train)
    pre_test = lr.predict(X_test)
    pre_train = lr.predict(X_train)
    train_score = accuracy_score(y_train,pre_train)
    test_score = accuracy_score(y_test,pre_test)
    return train_score,test_score
for i in method:
    print(i,'-&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;',cal(i))




First is training accuracy and second one is testing accuracy.
why am i getting more testing accuracy over training?

And Is there another way to increase the both accuracy?
I'm using min-max scaling so are there any other normalization to increase the accuracy more or this is the best accuracy we can get using logistic?
Good that you raise the question because there's most likely a bug.

I've done over 100 ML models and never seen test accuracy being higher than train accuracy.

Potential bug? Most likely there are much more class labels in your training than in your test set. Solution? Try in class_weight = "balanced". This most likely fixes it.

Another potential problems? Did you fix the random seed? You did not set C at a high level? E.g. 100, 1000..

PS: Nice! I see you normalize first and then split train and test! Well done. By doing so, you avoid data leakage.