-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMachine_Learning_diabetes_data.py
More file actions
129 lines (102 loc) · 4.25 KB
/
Machine_Learning_diabetes_data.py
File metadata and controls
129 lines (102 loc) · 4.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# -*- coding: utf-8 -*-
"""
Created on Mon Mar 16 22:20:04 2020
@author: ayanca
"""
import warnings
import numpy as np
import pandas as pd
from ML_methods_diabetes import *
from normality_test import *
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.linear_model import LogisticRegression
################################################################################################################################################
#load data
path = r"C:\Users\ayanca\.spyder-py3\obesity_paper_1\diabetes\pima-indians-diabetes-database\diabetes.csv"
headernames = ['Pregnancies', 'Glucose', 'BloodPressure', 'SkinThickness','Insulin','BMI','DiabetesPedigreeFunction','Age','Outcome']
final_column = ['Glucose', 'BloodPressure', 'BMI','DiabetesPedigreeFunction','Age','Outcome']
data = pd.read_csv(path, na_values="?", low_memory=False)
data = data[final_column]
warnings.filterwarnings('ignore')
np.seterr(divide = 'ignore')
np.seterr(all = 'ignore')
print (data.shape)
#check if missing value (cleaning)
data = remove_missing(data)
check_feature(data)
corr_sort = find_feature_reduced_matrix(data.corr())
print ("Strong dependency,", corr_sort)
to_drop = find_feature_reduced_matrix(data.corr())
print (data.columns)
data.drop(to_drop, axis=1, inplace=True)
data_visualize(data, final_column)
print (data.columns)
features = data.shape[1]-1
print (features)
print (data.head(10))
#remove duplicate
if data.duplicated().sum()>0:
print ("found and removed...",data.duplicated().sum())
data.drop_duplicates(inplace = True)
#filtering age
data = data[data['Age']>20]
data = data[data['Age']<60]
################################################################################################################################################
data = data.values
data = np.array(data, dtype = float)
#############column selection based on p-value###############
selected_columns = data
'''
import statsmodels.api as sm
def backwardElimination(x, Y, sl, columns):
numVars = len(x[0])
for i in range(0, numVars):
regressor_OLS = sm.OLS(Y, x).fit()
maxVar = max(regressor_OLS.pvalues).astype(float)
if maxVar > sl:
for j in range(0, numVars - i):
if (regressor_OLS.pvalues[j].astype(float) == maxVar):
x = np.delete(x, j, 1)
columns = np.delete(columns, j)
regressor_OLS.summary()
return x, columns
p_val = 0.05
data_modeled, selected_columns = backwardElimination(data[:, :features], data[:,features], p_val, selected_columns)
print (data_modeled)
print (selected_columns)
'''
##########################ends###############################
#shuffle data
np.random.shuffle(selected_columns)
print ("Data shape after shuffling:", selected_columns.shape)
################################################################################################################################################
#ML-Data Ready
fold = 5
X, y = data[:, :features], data[:,features]
#print (X,y)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.2, random_state=33)
#Individual Model
#ML-SVM
'''
print ("SVM............linear........")
svm_linear_accuracy(X_train, X_test, y_train, y_test, fold)
print ("LR............logistic regression........")
lr_accuracy(X_train, X_test, y_train, y_test, fold)
print ("NB..........GNB..........")
NB_accuracy_gaussian(X_train, X_test, y_train, y_test, fold)
'''
#ML-compare
print ("Compare Machine Learning Algorithms Consistently....................")
print ("5 fold cross validation...")
#ensemble_all_general(X, y, fold = 5)
plot_ml_model(X, y, fold = 5)
#print ("Gid search 5 fold")
#grid_search(X, y, fold)
#ensemble_voting_classifier(X_train, X_test, y_train, y_test, fold)
calibration_model_compare (X_train, y_train, X_test, y_test)
calibration(X_train, y_train, X_test, y_test,GaussianNB(),"Naive Bayes",2)
#calibration(X_train, y_train, X_test, y_test, LogisticRegression(),"LR",2)
#from sklearn.tree import DecisionTreeClassifier
#calibration(X_train, y_train, X_test, y_test,DecisionTreeClassifier(),"DTree",2)