Mar-31-2020, 07:23 AM
Quote:I am working on a project called heart disease predictor.When i click the button predict heart disease.The below error is coming.But clf is defined global.Help me out asap.
Thank you.
import tkinter #importing tkinter library for GUI creation from tkinter import * from PIL import Image, ImageTk import tkinter.messagebox from tkinter import filedialog #import mysql.connector #from keras.models import Sequential #from keras.layers import Dense import pandas as pnd # importing pandas data analysis toolkit import numpy as np # importing numpy library for array operations from time import time # importing time library for time calculations from sklearn.model_selection import train_test_split # importing module model_classification from scikit-learn library print("hello") header_row = ['age', 'sex', 'pain', 'BP', 'chol', 'fbs', 'ecg', 'maxhr','eiang', 'eist', 'slope', 'vessels', 'thal', 'diagnosis'] # Declaring the header row for getting data from the dataset files # filter to only those diagnosed with heart disease def cardiac(): global master master = Tk() # Defining the Tkinter widget master.wm_title("Heart Disease Prediction") master.geometry('1500x600') image = Image.open('c3.jpg') image = image.resize((1500, 600)) photo_image = ImageTk.PhotoImage(image) label = Label(master, image = photo_image) label.place(x=0,y=0) import sklearn # Importing scikit-learn functions #Lab=Label(master,text=" Automatic Heart Disease Detection ") # Adding Label to the Tkinter widget #Lab.place(x=600,y=50) # Packing the label data to the tkinter widget in user defined rows and columns # Changing dimensions of the Label #Lab=Label(master,text="") #Lab.grid(row=2,column=5,columnspan=2) #Lab1=Label(master,text="Classification Report") #Lab1.place(x=170,y=330) #Lab2=Label(master,text="Confusion Matrix") #Lab2.place(x=930,y=330) T = Text(master, height=6, width=40,font=("bold",10),highlightthickness=2,bg="white",relief=SUNKEN) # Declaring Text Widget for Result Displaying T.place(x=55,y=350) T1 = Text(master, height=6, width=35,font=("bold",10),highlightthickness=2,bg="white",relief=SUNKEN) T1.place(x=1000,y=350) var = StringVar(master) var.set("Select Dataset") # initial value option = OptionMenu(master, var, "Cleveland", "Hungarian", "VA", "all") # Declaring the OptionMenu (Drop-Down list) widget option.config(bg = "violet") option.config(fg = "black") option.config(font=('algerian',10,'bold')) option.config(width=12) option.place(x=500,y=80) '''field1="Age" # Defining the field names which user has to input for heart disease detection field2="Sex" field3="Pain" field4="BP" field5="Chol" field6="FBS" field7="ECG" field8="Maxhr" field9="Eiang" field10="Eist" field11="Slope" field12="Vessels" field13="Thal"''' '''L1=Label(master,text=field1) L1.grid(row = 4, column = 0, sticky='nsew') L1.configure(width=14) L2=Label(master,text=field2) L2.grid(row = 4, column = 1, sticky='nsew') L2.configure(width=14) L3=Label(master,text=field3) L3.grid(row = 4, column = 2, sticky='nsew') L3.configure(width=14) L4=Label(master,text=field4) L4.grid(row = 4, column = 3, sticky='nsew') L4.configure(width=14) L5=Label(master,text=field5) L5.grid(row = 4, column = 4, sticky='nsew') L5.configure(width=14) L6=Label(master,text=field6, ) L6.grid(row = 4, column = 5, sticky='nsew') L6.configure(width=14) L7=Label(master,text=field7) L7.grid(row = 4, column = 6, sticky='nsew') L7.configure(width=14) L8=Label(master,text=field8) L8.grid(row = 4, column = 7, sticky='nsew') L8.configure(width=14) L9=Label(master,text=field9) L9.grid(row = 4, column = 8, sticky='nsew') L9.configure(width=14) L10=Label(master,text=field10) L10.grid(row = 4, column = 9, sticky='nsew') L10.configure(width=14) L11=Label(master,text=field11) L11.grid(row = 4, column = 10, sticky='nsew') L11.configure(width=14) L12=Label(master,text=field12) L12.grid(row = 4, column = 11, sticky='nsew') L12.configure(width=14) L13=Label(master,text=field13) L13.grid(row = 4, column = 12, sticky='nsew') L13.configure(width=14)''' E1=Entry(master,width=8,font=("bold",10),highlightthickness=2,bg="WHITE",relief=SUNKEN) E1.place(x=0, y=220) E2=Entry(master,width=8,font=("bold",10),highlightthickness=2,bg="WHITE",relief=SUNKEN) E2.place(x=90, y=220) E3=Entry(master,width=8,font=("bold",10),highlightthickness=2,bg="WHITE",relief=SUNKEN) E3.place(x=180, y=220) E4=Entry(master,width=8,font=("bold",10),highlightthickness=2,bg="WHITE",relief=SUNKEN) E4.place(x=280, y=220) E5=Entry(master,width=8,font=("bold",10),highlightthickness=2,bg="WHITE",relief=SUNKEN) E5.place(x=370, y=220) E6=Entry(master,width=8,font=("bold",10),highlightthickness=2,bg="WHITE",relief=SUNKEN) E6.place(x=470, y=220) E7=Entry(master,width=8,font=("bold",10),highlightthickness=2,bg="WHITE",relief=SUNKEN) E7.place(x=550, y=220) E8=Entry(master,width=8,font=("bold",10),highlightthickness=2,bg="WHITE",relief=SUNKEN) E8.place(x=650, y=220) E9=Entry(master,width=10,font=("bold",10),highlightthickness=2,bg="WHITE",relief=SUNKEN) E9.place(x=770, y=220) E10=Entry(master,width=10,font=("bold",10),highlightthickness=2,bg="WHITE",relief=SUNKEN) E10.place(x=880, y=220) E11=Entry(master,width=10,font=("bold",10),highlightthickness=2,bg="WHITE",relief=SUNKEN) E11.place(x=980, y=220) E12=Entry(master,width=10,font=("bold",10),highlightthickness=2,bg="WHITE",relief=SUNKEN) E12.place(x=1100, y=220) E13=Entry(master,width=10,font=("bold",10),highlightthickness=2,bg="WHITE",relief=SUNKEN) E13.place(x=1220, y=220) lb1 = Label(master, text="patient",font=('algerian',15,'bold'),fg="BLACK",anchor='w') lb1.place(x=0, y=150) E0=Entry(master,width=10,font=("bold",15),highlightthickness=2,bg="WHITE",relief=SUNKEN) E0.place(x=120, y=150) '''Labx=Label(master,text="") Labx.grid(row=21,column=4,columnspan=4) Labx.visible=False''' #T3 = Text(master, height=2, width=30) # Declaring Text Widget for Displaying Prediction #T3.grid(row=23,column=4, columnspan=4, sticky= 'nsew') def train_classifier(x_train,x_test,y_train,y_test,string): # Declaring the function for training classifiers and classification analysis global clf # Declaring clf as a Global Variable for using throughot the code global outclass global a1,a2,a3 from sklearn.metrics import classification_report from sklearn.metrics import confusion_matrix T.delete(1.0,END) # Deleting the text in the Text Widget T1.delete(1.0,END) if string=="CNN": from keras.models import Sequential from keras.layers import Dense import matplotlib.pyplot as plt1 #import pandas as pnd # importing pandas data analysis toolkit #import numpy as np t1= time() clf = Sequential() #initial creation clf.add(Dense(13, input_dim=13, init='uniform', activation='relu')) #first hidden layer clf.add(Dense(10, init='uniform', activation='relu')) #model.add(Dense(8, init='uniform', activation='relu')) #model.add(Dense(6, init='uniform', activation='relu')) clf.add(Dense(1, init='uniform', activation='sigmoid')) #output layer # compile the model clf.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # fitting data to model clf.fit(x_train, y_train, validation_data=(x_test, y_test), epochs=200, batch_size=5, verbose=0) # evaluate the model scores = clf.evaluate(x_test, y_test) #printing accuracy print("Accuracy: %.2f%%" % (scores[1]*100)) #p1=model.predict(Xv) #print(p1) a1=(scores[1]*100) T.insert(END, "Accuracy") T.insert(END, " ") T.insert(END,(scores[1]*100) ) y_pred = clf.predict(x_test) print(y_pred) l1=list() for i in y_pred: if i<.49: l1.append(0) else: l1.append(1) print(l1) count1=y_test.count() l2=list(range(1,count1+1,1)) print(count1) print(y_test.count()) #print(count(l1)) colormap=np.array(['lime','red']) plt1.subplot(1,2,1) plt1.scatter(l2,y_test,c=colormap[y_test]) plt1.suptitle("CNN Algorihm") plt1.xlabel("X values") plt1.ylabel("y tests values") plt1.title("true Values") plt1.subplot(1,2,2) plt1.scatter(l2,l1,c=colormap[l1]) plt1.suptitle("CNN Algorihm") plt1.xlabel("X values") plt1.ylabel("Predictions") plt1.title("Predictions") plt1.show() # Predict Results for Test Data #title = "Learning Curves (SVM)" #print(y_train) #geterror(x_train,y_train,clf,title); t= time()-t1 T.insert(END, "Accuracy") T.insert(END, " ") T.insert(END,(scores[1]*100) ) print("Training Complete") elif string=="Naive Bayes": from sklearn.naive_bayes import GaussianNB import matplotlib.pyplot as plt2 t2=time() clf = GaussianNB() # Initializing the Naive Bayes Classifier clf.partial_fit(x_train, y_train, np.unique(y_train)) # Fitting the classifier to the training and testing the Naive Bayes Classifier y_pred = clf.predict(x_test) print(y_pred) t = time() - t2 title = "Learning Curves (Naive Bayes)" #geterror(x_train,y_train,clf,title); classre=classification_report(y_test,y_pred) # Generating Classification Report T.insert(END,classre[1:5]+classre[1:32]+classre[1:13]+classre[60:90]+classre[1:11]+classre[1:2]+classre[115:140]+classre[1:7]+classre[161:195]) # Printing Precision and Recall Results print(classre) confmat=confusion_matrix(y_test,y_pred) # Calculating the Confusion Matrix for the classification T1.insert(END, confmat) T.insert(END, classre[1:9]) T.insert(END, "Accuracy") T.insert(END, classre[1:5]) T.insert(END, int(float((y_test==y_pred).sum())/len(y_test.T)*100)) T.insert(END, "%") T.insert(END, classre[1:10]+classre[1:10]) T.insert(END, "Class. Time") T.insert(END, classre[1:8]) #T.insert(END, t[0:4]+" sec") a2=int(float((y_test==y_pred).sum())/len(y_test.T)*100) count2=y_test.count() l3=list(range(1,count2+1,1)) print(count2) print(y_test.count()) #print(count(l1)) colormap=np.array(['lime','red']) plt2.subplot(1,2,1) plt2.scatter(l3,y_test,c=colormap[y_test]) plt2.suptitle("Naviee Bayesian Algorihm") plt2.xlabel("X values") plt2.ylabel("y tests values") plt2.title("true Values") plt2.subplot(1,2,2) plt2.scatter(l3,y_pred,c=colormap[y_pred]) plt2.suptitle("Naviee Bayesian Algorihm") plt2.xlabel("X values") plt2.ylabel("Predictions") plt2.title("Predictions") plt2.show() print("Training Complete") elif string=="K-Nearesr Neighbour": from sklearn.neighbors import KNeighborsClassifier import matplotlib.pyplot as plt3 clf = KNeighborsClassifier(n_neighbors=5) clf.fit(x_train, y_train) y_pred = clf.predict(x_test) print(y_pred) print(y_test) classre=classification_report(y_test,y_pred) # Generating Classification Report T.insert(END,classre[1:5]+classre[1:32]+classre[1:13]+classre[60:90]+classre[1:11]+classre[1:2]+classre[115:140]+classre[1:7]+classre[161:195]) # Printing Precision and Recall Results print(classre) confmat=confusion_matrix(y_test,y_pred) # Calculating the Confusion Matrix for the classification T1.insert(END, confmat) T.insert(END, classre[1:9]) T.insert(END, "Accuracy") T.insert(END, classre[1:5]) T.insert(END, int(float((y_test==y_pred).sum())/len(y_test.T)*100)) T.insert(END, "%") T.insert(END, classre[1:10]+classre[1:10]) #T.insert(END, "Class. Time") #T.insert(END, classre[1:8]) #T.insert(END, t[0:4]+" sec") a3=int(float((y_test==y_pred).sum())/len(y_test.T)*100) count3=y_test.count() l4=list(range(1,count3+1,1)) print(count3) print(a1) print(a2) print(a3) #plot_bar_x(a1,a2,a3); print(y_test.count()) #print(count(l1)) colormap=np.array(['lime','red']) plt3.subplot(1,2,1) plt3.scatter(l4,y_test,c=colormap[y_test]) plt3.suptitle("K Nearest Neighbour Algorihm") plt3.xlabel("X values") plt3.ylabel("Y tests values") plt3.title("True Values") plt3.subplot(1,2,2) plt3.scatter(l4,y_pred,c=colormap[y_pred]) plt3.suptitle("K Nearest Neighbour Algorihm") plt3.xlabel("X values") plt3.ylabel("Predictions") plt3.title("Predictions") plt3.show() #print(a1) #print(a2) #print(a3) plot_bar_x(a1,a2,a3) print("Training Complete") '''elif string=="Logistic Regression": from sklearn.linear_model import LogisticRegression t3=time() clf=LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, solver='liblinear', max_iter=100, verbose=0, warm_start=False, n_jobs=1) # Initializing the Logistic Regression Classifier clf.fit(x_train,y_train) y_pred = clf.predict(x_test) print(y_pred) t = time() - t3 title = "Learning Curves (Logistic Regression)" # geterror(x_train,y_train,clf,title); print("Training Complete") t=str(t)''' '''print(y_test) classre=classification_report(y_test,y_pred) # Generating Classification Report T.insert(END,classre[1:5]+classre[1:32]+classre[1:13]+classre[60:90]+classre[1:11]+classre[1:2]+classre[115:140]+classre[1:7]+classre[161:195]) # Printing Precision and Recall Results print(classre) confmat=confusion_matrix(y_test,y_pred) # Calculating the Confusion Matrix for the classification T1.insert(END, confmat) T.insert(END, classre[1:9]) T.insert(END, "Accuracy") T.insert(END, classre[1:5]) T.insert(END, int(float((y_test==y_pred).sum())/len(y_test.T)*100)) T.insert(END, "%") T.insert(END, classre[1:10]+classre[1:10]) T.insert(END, "Class. Time") T.insert(END, classre[1:8]) T.insert(END, t[0:4]+" sec") import matplotlib.pyplot as plt''' def plot_bar_x(a1,a2,a3): import matplotlib.pyplot as pltu import numpy as np print(a1) print(a2) print(a3) label = ['CNN', 'NAIVE BAYESIAN', 'KNN'] no_movies = [a1,a2,a3] # this is for plotting purpose index = np.arange(len(label)) pltu.bar(index, no_movies) pltu.xlabel('Algorithms', fontsize=15) pltu.ylabel('Accuracies', fontsize=15) pltu.xticks(index, label, fontsize=15, rotation=30) pltu.title('Comparison of different algorithms used') pltu.show() def process_dataset(string): if string=="Cleveland": heart = pnd.read_csv('processed.cleveland.data', names=header_row) # Reading the dataset file in .data format using Pandas library function read_csv() print("Unprocessed Cleveland Dataset") print("************************************************************************") print(heart.loc[:, 'age':'diagnosis']) print("************************************************************************") import numpy as np has_hd_check = heart['diagnosis'] > 0 # Getting the indices of individuals having heart disease has_hd_patients = heart[has_hd_check] heart['vessels'] = heart['vessels'].apply(lambda vessels: 0.0 if vessels == "?" else vessels) # Replacing the unknown values in the dataset with float heart['vessels'] = heart['vessels'].astype(float) heart['thal'] = heart['thal'].apply(lambda thal: 0.0 if thal == "?" else thal) heart['thal'] = heart['thal'].astype(float) heart['diag_int'] = has_hd_check.astype(int) ind1 = np.where((heart['diagnosis'] == 1)|(heart['diagnosis'] ==2)); ind2 = np.where((heart['diagnosis'] == 3)|(heart['diagnosis'] ==4)); temp = heart['diagnosis']; temp.ix[ ind1 ] = 1; temp.ix[ ind2 ] = 2; heart['diagnosis'] = temp; global x_train global y_train global x_test global y_test x_train, x_test, y_train, y_test = train_test_split(heart.loc[:, 'age':'thal'], heart.loc[:, 'diagnosis'], # Splitting the processed data into training data and testing data test_size=0.20, random_state=42) # test_size = percent of data used for testing, # random_state = for initializing the random number generator print("Processed Cleveland Dataset") print("************************************************************************") print(heart.loc[:, 'age':'diagnosis']) print("************************************************************************") elif string=="VA": import numpy as np heart_va = pnd.read_csv('processed.va.data', names=header_row) print("Unprocessed VA Dataset") print("************************************************************************") print(heart_va.loc[:, 'age':'diagnosis']) print("************************************************************************") has_hd_check = heart_va['diagnosis'] > 0 heart_va['diag_int'] = has_hd_check.astype(int) heart_va = heart_va.replace(to_replace='?', value=0.0) heart_va['diag_int'] = has_hd_check.astype(int) ind1 = np.where((heart_va['diagnosis'] == 1)|(heart_va['diagnosis'] ==2)); ind2 = np.where((heart_va['diagnosis'] == 3)|(heart_va['diagnosis'] ==4)); temp = heart_va['diagnosis']; temp.ix[ ind1 ] = 1; temp.ix[ ind2 ] = 2; heart_va['diagnosis'] = temp; print("Processed VA Dataset") print("************************************************************************") print(heart_va.loc[:, 'age':'diagnosis']) print("************************************************************************") x_train, x_test, y_train, y_test = train_test_split(heart_va.loc[:, 'age':'thal'], heart_va.loc[:, 'diagnosis'], test_size=0.30, random_state=42) elif string=="Hungarian": import numpy as np heart_hu = pnd.read_csv('processed.hungarian.data', names=header_row) print("Unprocessed Hungarian Dataset") print("************************************************************************") print(heart_hu.loc[:, 'age':'diagnosis']) print("************************************************************************") has_hd_check = heart_hu['diagnosis'] > 0 heart_hu['diag_int'] = has_hd_check.astype(int) heart_hu = heart_hu.replace(to_replace='?', value=0.0) ind1 = np.where((heart_hu['diagnosis'] == 1)|(heart_hu['diagnosis'] ==2)); ind2 = np.where((heart_hu['diagnosis'] == 3)|(heart_hu['diagnosis'] ==4)); temp = heart_hu['diagnosis']; temp.ix[ ind1 ] = 1; temp.ix[ ind2 ] = 2; heart_hu['diagnosis'] = temp; print("Processed Hungarian Dataset") print("************************************************************************") print(heart_hu.loc[:, 'age':'diagnosis']) print("************************************************************************") heart_hu['diag_int'] = has_hd_check.astype(int) x_train, x_test, y_train, y_test = train_test_split(heart_hu.loc[:, 'age':'thal'], heart_hu.loc[:, 'diagnosis'], test_size=0.30, random_state=42) elif string=="all": import numpy as np heart_cl = pnd.read_csv('processed.cleveland.data', names=header_row) print("Unprocessed Cleveland Dataset") print("************************************************************************") print(heart_cl.loc[:, 'age':'diagnosis']) print("************************************************************************") has_hd_check = heart_cl['diagnosis'] > 0 has_hd_patients = heart_cl[has_hd_check] heart_cl['diag_int'] = has_hd_check.astype(int) heart_cl['vessels'] = heart_cl['vessels'].apply(lambda vessels: 0.0 if vessels == "?" else vessels) heart_cl['vessels'] = heart_cl['vessels'].astype(float) heart_cl['thal'] = heart_cl['thal'].apply(lambda thal: 0.0 if thal == "?" else thal) heart_cl['thal'] = heart_cl['thal'].astype(float) ind1 = np.where((heart_cl['diagnosis'] == 1)|(heart_cl['diagnosis'] ==2)); ind2 = np.where((heart_cl['diagnosis'] == 3)|(heart_cl['diagnosis'] ==4)); temp = heart_cl['diagnosis']; temp.ix[ ind1 ] = 1; temp.ix[ ind2 ] = 2; heart_cl['diagnosis'] = temp; heart_va = pnd.read_csv('processed.va.data', names=header_row) print("Unprocessed VA Dataset") print("************************************************************************") print(heart_va.loc[:, 'age':'diagnosis']) print("************************************************************************") has_hd_check = heart_va['diagnosis'] > 0 heart_va['diag_int'] = has_hd_check.astype(int) heart_va = heart_va.replace(to_replace='?', value=0.0) ind1 = np.where((heart_va['diagnosis'] == 1)|(heart_va['diagnosis'] ==2)); ind2 = np.where((heart_va['diagnosis'] == 3)|(heart_va['diagnosis'] ==4)); temp = heart_va['diagnosis']; temp.ix[ ind1 ] = 1; temp.ix[ ind2 ] = 2; heart_va['diagnosis'] = temp; print("Processed VA Dataset") print("************************************************************************") print(heart_va.loc[:, 'age':'diagnosis']) print("************************************************************************") heart_hu = pnd.read_csv('processed.hungarian.data', names=header_row) print("Unprocessed Hungarian Dataset") print("************************************************************************") print(heart_hu.loc[:, 'age':'diagnosis']) print("************************************************************************") has_hd_check = heart_hu['diagnosis'] > 0 heart_hu['diag_int'] = has_hd_check.astype(int) heart_hu = heart_hu.replace(to_replace='?', value=0.0) ind1 = np.where((heart_hu['diagnosis'] == 1)|(heart_hu['diagnosis'] ==2)); ind2 = np.where((heart_hu['diagnosis'] == 3)|(heart_hu['diagnosis'] ==4)); temp = heart_hu['diagnosis']; temp.ix[ ind1 ] = 1; temp.ix[ ind2 ] = 2; heart_hu['diagnosis'] = temp; print("Processed Hungarian Dataset") print("************************************************************************") print(heart_hu.loc[:, 'age':'diagnosis']) print("************************************************************************") x_train1, x_test1, y_train1, y_test1 = train_test_split(heart_cl.loc[:, 'age':'thal'], heart_cl.loc[:, 'diagnosis'], test_size=0.30, random_state=42) x_train2, x_test2, y_train2, y_test2 = train_test_split(heart_va.loc[:, 'age':'thal'], heart_va.loc[:, 'diagnosis'], test_size=0.30, random_state=42) x_train3, x_test3, y_train3, y_test3 = train_test_split(heart_hu.loc[:, 'age':'thal'], heart_hu.loc[:, 'diagnosis'], test_size=0.30, random_state=42) # Combining the dataset for Cleveland, VA and Hungarian Dataset x_train4= x_train1.append(x_train2); x_train = x_train4.append(x_train3); y_train4 = y_train1.append(y_train2); y_train = y_train4.append(y_train3); x_test4 = x_test1.append(x_test2); x_test = x_test4.append(x_test3) y_test4 = y_test1.append(y_test2); y_test = y_test4.append(y_test3); button = Button(master, text="Process Dataset",height=1,fg="black",font=('algerian',13,'bold'),bg="violet",justify='center', command=lambda: process_dataset(var.get())) #Defining the button in the Tkinter Widget button.place(x=700,y=80) var1 = StringVar(master) var1.set("Select Classifier") # initial value option1 = OptionMenu(master, var1, "CNN", "Naive Bayes","K-Nearesr Neighbour") option1.place(x=500,y=120) option1.config(bg = "violet") option1.config(fg = "black") option1.config(font=('algerian',10,'bold')) option1.config(width=12) #option.place ( relx=0.5, rely=0.1) button1 = Button(master, text=" Train Classifier",height=1,fg="black",font=('algerian',13,'bold'),bg="violet",justify='center', command=lambda: train_classifier(x_train,x_test,y_train,y_test,var1.get())) button1.place(x=700,y=120) #e1.bind('<Button-1>',e1.delete(0,END)) def predres(clf): # Defining function to predict the result from the user input data E14=E10.get() # Converting the Eist data according to sign and decimal point if len(E14)==3 or len(E14)==4: E15=float(E14) else: E16=E14+'.0' E15=float(E16) test=[float(E1.get()+'.0'),float(E2.get()+'.0'),float(E3.get()+'.0'),float(E4.get()+'.0'),float(E5.get()+'.0'),float(E6.get()+'.0'),float(E7.get()+'.0'),float(E8.get()+'.0'),float(E9.get()+'.0'),E15,float(E11.get()),float(E12.get()+'.0'),float(E13.get()+'.0')] test=np.reshape(test,(1,-1)) #print(test) print(clf) print(clf.predict(test)) if clf.predict(test) < 0.49: res="The Person does not have heart Disease" Labx1=Label(master,text="The Person does not have heart Disease", bg='green') Labx1.visible=False Labx1.place(x=600,y=430) Labx1.visible=True #T3.insert(END,"The Person has Heart Disease") elif clf.predict(test) == 2: res="The Person has Severe heart Disease" Labx1=Label(master,text="The Person has Severe heart Disease", bg='red') Labx1.visible=False Labx1.place(x=600,y=430) Labx1.visible=True else: res="The Person has heart Disease" Labx1=Label(master,text="The Person has heart Disease ", bg='red') Labx1.visible=False Labx1.place(x=600,y=430) Labx1.visible=True #T3.insert(END,"The Person does not have Heart Disease") age= E1.get() sex = E2.get() pai= E3.get() bp= E4.get() chol = E5.get() fbs = E6.get() ecg = E7.get() maxhr = E8.get() eiang = E9.get() eist = E10.get() slope = E11.get() vessels = E12.get() thal = E13.get() pana=E0.get() aa = mysql.connector.connect(host='localhost', port=3306, user="root", passwd="root", db="cardiac") mm = aa.cursor() mm.execute("""INSERT INTO cardiac1 VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)""", (age,sex,pai,bp,chol,fbs,ecg,maxhr,eiang,eist,slope,vessels,thal,pana,res)) aa.commit() #con.close() def geterror(x_train,y_train,clf,title): #global clf #global outclass import matplotlib.pyplot as plt from sklearn.model_selection import learning_curve from sklearn.model_selection import ShuffleSplit clas=[]; def plot_learning_curve(estimator, title, X, y, ylim=None, cv=None, n_jobs=1, train_sizes=np.linspace(.1, 1.0, 5)): plt.figure() plt.title(title) if ylim is not None: plt.ylim(*ylim) plt.xlabel("Training examples") plt.ylabel("Score") train_sizes, train_scores, test_scores = learning_curve( estimator, X, y, cv=cv, n_jobs=n_jobs, train_sizes=train_sizes) train_scores_mean = np.mean(train_scores, axis=1) train_scores_std = np.std(train_scores, axis=1) test_scores_mean = np.mean(test_scores, axis=1) test_scores_std = np.std(test_scores, axis=1) plt.grid() plt.fill_between(train_sizes, train_scores_mean - train_scores_std, train_scores_mean + train_scores_std, alpha=0.1, color="r") plt.fill_between(train_sizes, test_scores_mean - test_scores_std, test_scores_mean + test_scores_std, alpha=0.1, color="g") plt.plot(train_sizes, train_scores_mean, 'o-', color="r", label="Training score") plt.plot(train_sizes, test_scores_mean, 'o-', color="g", label="Cross-validation score") plt.legend(loc="best") plt.axis([ 0,len(y),0,1.1]) return plt for index in range(len(y_train)): #x_train1=np.reshape(x_train.iloc[index:],(1,-1)); x_train1=x_train.iloc[index].values.reshape(1,-1); outclass = clf.predict(x_train1); clas.append(outclass[0]); ind3 = np.where((clas == y_train)); ind4 = np.where((clas != y_train)); l=0 m=0 cv = ShuffleSplit(n_splits=4, test_size=0.2, random_state=0) plot_learning_curve(clf, title, x_train, y_train, (0.7, 1.01), cv=cv, n_jobs=1) plt.show() button2 = Button(master, text=" Predict Heart Disease ",width=20,height=1,fg="black",font=('algerian',13,'bold'),bg="violet",justify='center',command=lambda:predres(clf)) button2.place(x=600,y=300) btn6=Button(master,text="LOGOUT",width=8,height=1,fg="black",font=('algerian',15,'bold'),bg="SKYBLUE",justify='center',command=cardes) btn6.place(x=1100,y=80) #button2.configure(width=14) #button1.place(relx=0.1,rely=0.2) master.mainloop() def adminlogin(): def adminlogininto(): usernames = e1.get() passwords = e2.get() if e1.get() == "" or e2.get() == "": tkinter.messagebox.showinfo("sorry","Please complete the required field") elif e1.get() == "admin" and e2.get() == "admin": #tkMessageBox.showinfo("yeh","logged in") admindes() else: tkinter.messagebox.showinfo("Sorry" , "Wrong Password") global window1 window1=Tk() window1.title("LOGIN PAGE") window1.geometry('700x500') image = Image.open('photo.png') image = image.resize((700, 600)) photo_image = ImageTk.PhotoImage(image) label = Label(window1, image = photo_image) label.place(x=0,y=0) '''lb1=Label(window1,text="USERNAME",font=('algerian',25,'bold'),fg="BLACK",anchor='w') lb1.place(x=150,y=400)''' e1=Entry(window1,width=10,font=("bold",17),highlightthickness=2,bg="WHITE",relief=SUNKEN) e1.place(x=250,y=150) '''lb2=Label(window1,text="PASSWORD",font=('algerian',25,'bold'),fg="BLACK",anchor='w') lb2.place(x=150,y=450)''' e2=Entry(window1,width=10,show="*",font=("bold",17),highlightthickness=2,bg="WHITE",relief=SUNKEN) e2.place(x=250,y=200) btn6=Button(window1,text="LOGIN",width=8,height=1,fg="black",font=('algerian',15,'bold'),bg="SKYBLUE",justify='center',command=adminlogininto) btn6.place(x=270,y=300) window1.mainloop() def admindes(): window1.destroy() cardiac() def cardes(): master.destroy() adminlogin() if __name__ == "__main__": adminlogin()
Error:Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Dell\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "C:\Users\Dell\Desktop\finalproject\heartfinal.py", line 755, in <lambda>
button2 = Button(master, text=" Predict Heart Disease ",width=20,height=1,fg="black",font=('algerian',13,'bold'),bg="violet",justify='center',command=lambda:predres(clf))
NameError: name 'clf' is not defined