"""
Logistic regressio n
"""
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# Importing Library for logistic regression
from sklearn.linear_model import LogisticRegression
# Importing performance metrics - accuracy_score, confusion_matrix
from sklearn.metrics import accuracy_score,confusion_matrix
###############################################################################
# Reading Data Set
crash_data = pd.read_csv('heart.csv')
"""
unique class
"""
print(np.unique(crash_data['sex'],return_counts=True))
# Storing the column names
crash_data_columns_list = list(crash_data.columns)
print(crash_data_columns_list)
# Separating the unput names from species
features = list(set(crash_data_columns_list)- set(['sex']))
print(features)
# Storing the output values in y
target = list(['sex'])
y= crash_data[target].values
y= crash_data['sex'].values
print(y)
# Storing the values from input features
x = crash_data[features].values
# Splitting the data into train and test
train_x, test_x, train_y, test_y = train_test_split(x, y, test_size=0.3,random_state=0)
# Data scaling
scaler= StandardScaler()
# Fit on training set only
scaler.fit(train_x)
# Apply transform to both the training set and the test set.
train_x = scaler.transform(train_x)
test_x = scaler.transform(test_x)
# Make an instance of the model
logistic = LogisticRegression()
# Fitting the values frof x and y
logistic.fit(train_x,train_y)
# Prediction from test data
prediction= logistic.predict(test_x)
# Confusion matrix
confusion_matrix = confusion_matrix(prediction,test_y)
print(confusion_matrix)
# Calculating the accuracy
accuracy_score= accuracy_score(prediction,test_y)
print(accuracy_score)
# Printing the misclassified valuesfrom prediction
print('Misclassified samples: %d' % (test_y != prediction).sum())