Commit 7f10080b authored by Anuththara K.G.S.N's avatar Anuththara K.G.S.N

Upload the Model

parent 50d89040
#!/usr/bin/env python
# coding: utf-8
# Severity Level Prediction
# In[1]:
#Importing Libraries
from mpl_toolkits.mplot3d import Axes3D
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
from tkinter import *
import numpy as np
import pandas as pd
import os
# In[2]:
#List of the symptoms is listed here in list l1.
l1=['Yeast_Visibility-ears,armpits,_or_paws','Yeast_Visibility-around_half_of_the_body','Yeast_Visibility-whole_body',
'Redness-pink_or_red_skin','Redness-red_skin','Redness-gray_or_black_skin',
'No_unpleasant_Smell','Musty_smell','Extreme_musty_smell',
'No_Itching_and_Scratching','Itching_and_Scratching-time_to_time','Itching_and_Scratching-constantly',
'No_Thickened_Skin','Thickened_Skin','Extremely_Thickened_Skin(Elephant_skin_appearance)',
'No_Hair_Loss','Starting_Hair_Loss','Hair_Loss',
'No_Hearing_Issues','Hearing_Issues','Deafness']
# In[3]:
#List of Severity Levels.
level=['Primary','Secondary','Tertiary']
#level = [df['Prediction'].unique()]
# In[4]:
l2=[]
for i in range(0,len(l1)):
l2.append(0)
print(l2)
# In[5]:
#Reading the training.csv file
df=pd.read_csv("severity level.csv")
DF=pd.read_csv("severity level.csv" , index_col='Prediction')
#Replace the values in the imported file by pandas by the inbuilt function replace in pandas.
df.replace({'Prediction':{'Primary':0,'Secondary':1,'Tertiary':2}},inplace=True)
#df.head()
DF.head()
# In[6]:
X= df[l1]
y = df[["Prediction"]]
np.ravel(y)
print(X)
# In[7]:
#Reading the testing.csv file
tr=pd.read_csv("testing.csv")
#Using inbuilt function replace in pandas for replacing the values
tr.replace({'Prediction':{'Primary':0,'Secondary':1,'Tertiary':2}},inplace=True)
tr.head()
# In[8]:
X_test= tr[l1]
y_test = tr[["Prediction"]]
np.ravel(y_test)
print(X_test)
# In[9]:
print(y_test)
# Decision Tree Algorithm
# In[10]:
root = Tk()
pred1=StringVar()
def DecisionTree():
if len(NameEn.get()) == 0:
pred1.set(" ")
comp=messagebox.askokcancel("System","Please fill the breed of your pet !")
if comp:
root.mainloop()
elif((Symptom1.get()=="Select Here") or (Symptom2.get()=="Select Here") ):
pred1.set(" ")
sym=messagebox.askokcancel("System","Please fill atleast first two Symptoms")
if sym:
root.mainloop()
else:
from sklearn import tree
clf3 = tree.DecisionTreeClassifier()
clf3 = clf3.fit(X,y)
from sklearn.metrics import classification_report,confusion_matrix,accuracy_score
y_pred=clf3.predict(X_test)
print("Decision Tree")
print("Accuracy")
print(accuracy_score(y_test, y_pred))
print(accuracy_score(y_test, y_pred,normalize=False))
print("Confusion matrix")
conf_matrix=confusion_matrix(y_test,y_pred)
print(conf_matrix)
psymptoms = [Symptom1.get(),Symptom2.get(),Symptom3.get(),Symptom4.get(),Symptom5.get(),Symptom6.get(),Symptom7.get()]
for k in range(0,len(l1)):
for z in psymptoms:
if(z==l1[k]):
l2[k]=1
inputtest = [l2]
predict = clf3.predict(inputtest)
predicted=predict[0]
h='no'
for a in range(0,len(level)):
if(predicted == a):
h='yes'
break
if (h=='yes'):
pred1.set(" ")
pred1.set(level[a])
else:
pred1.set(" ")
pred1.set("Not Found")
# Random Forest Algorithm
# In[11]:
pred2=StringVar()
def randomforest():
if len(NameEn.get()) == 0:
pred1.set(" ")
comp=messagebox.askokcancel("System","Please fill the breed of your pet !")
if comp:
root.mainloop()
elif((Symptom1.get()=="Select Here") or (Symptom2.get()=="Select Here")):
pred1.set(" ")
sym=messagebox.askokcancel("System","Please fill atleast first two Symptoms")
if sym:
root.mainloop()
else:
from sklearn.ensemble import RandomForestClassifier
clf4 = RandomForestClassifier(n_estimators=100)
clf4 = clf4.fit(X,np.ravel(y))
# calculating accuracy
from sklearn.metrics import classification_report,confusion_matrix,accuracy_score
y_pred=clf4.predict(X_test)
print("Random Forest")
print("Accuracy")
print(accuracy_score(y_test, y_pred))
print(accuracy_score(y_test, y_pred,normalize=False))
print("Confusion matrix")
conf_matrix=confusion_matrix(y_test,y_pred)
print(conf_matrix)
psymptoms = [Symptom1.get(),Symptom2.get(),Symptom3.get(),Symptom4.get(),Symptom5.get(),Symptom6.get(),Symptom7.get()]
for k in range(0,len(l1)):
for z in psymptoms:
if(z==l1[k]):
l2[k]=1
inputtest = [l2]
predict = clf4.predict(inputtest)
predicted=predict[0]
h='no'
for a in range(0,len(level)):
if(predicted == a):
h='yes'
break
if (h=='yes'):
pred2.set(" ")
pred2.set(level[a])
else:
pred2.set(" ")
pred2.set("Not Found")
# Building Graphical User Interface
# In[12]:
#Tk class is used to create a root window
root.configure(background='Ivory')
root.title('Skin Disease Severity Level Predictor System')
root.resizable(0,0)
# In[13]:
Symptom1 = StringVar()
Symptom1.set("Select Here")
Symptom2 = StringVar()
Symptom2.set("Select Here")
Symptom3 = StringVar()
Symptom3.set("Select Here")
Symptom4 = StringVar()
Symptom4.set("Select Here")
Symptom5 = StringVar()
Symptom5.set("Select Here")
Symptom6 = StringVar()
Symptom6.set("Select Here")
Symptom7 = StringVar()
Symptom7.set("Select Here")
Name = StringVar()
# In[14]:
prev_win=None
def Reset():
global prev_win
Symptom1.set("Select Here")
Symptom2.set("Select Here")
Symptom3.set("Select Here")
Symptom4.set("Select Here")
Symptom5.set("Select Here")
Symptom6.set("Select Here")
Symptom7.set("Select Here")
NameEn.delete(first=0,last=100)
pred1.set(" ")
pred2.set(" ")
try:
prev_win.destroy()
prev_win=None
except AttributeError:
pass
# In[15]:
from tkinter import messagebox
def Exit():
qExit=messagebox.askyesno("System","Do you want to exit the system ?")
if qExit:
root.destroy()
exit()
# In[16]:
#Headings for the GUI written at the top of GUI
w2 = Label(root, justify=LEFT, text="Skin Disease Severity Level Prediction", fg="Black", bg="Ivory")
w2.config(font=("Times",30,"bold"))
w2.grid(row=1, column=0, columnspan=2, padx=100)
# In[17]:
#Label for the name
NameLb = Label(root, text="Breed of the Pet *", fg="Dark Blue", bg="Ivory")
NameLb.config(font=("Times",15,"bold"))
NameLb.grid(row=6, column=0, pady=15, sticky=W)
# In[18]:
#Creating Labels for the symtoms
S1Lb = Label(root, text="Symptom 1 *", fg="Black", bg="Ivory")
S1Lb.config(font=("Times",15,"bold"))
S1Lb.grid(row=7, column=0, pady=10, sticky=W)
S2Lb = Label(root, text="Symptom 2 *", fg="Black", bg="Ivory")
S2Lb.config(font=("Times",15,"bold"))
S2Lb.grid(row=8, column=0, pady=10, sticky=W)
S3Lb = Label(root, text="Symptom 3", fg="Black",bg="Ivory")
S3Lb.config(font=("Times",15,"bold"))
S3Lb.grid(row=9, column=0, pady=10, sticky=W)
S4Lb = Label(root, text="Symptom 4", fg="Black", bg="Ivory")
S4Lb.config(font=("Times",15,"bold"))
S4Lb.grid(row=10, column=0, pady=10, sticky=W)
S5Lb = Label(root, text="Symptom 5", fg="Black", bg="Ivory")
S5Lb.config(font=("Times",15,"bold"))
S5Lb.grid(row=11, column=0, pady=10, sticky=W)
S6Lb = Label(root, text="Symptom 6", fg="Black", bg="Ivory")
S6Lb.config(font=("Times",15,"bold"))
S6Lb.grid(row=12, column=0, pady=10, sticky=W)
S7Lb = Label(root, text="Symptom 7", fg="Black", bg="Ivory")
S7Lb.config(font=("Times",15,"bold"))
S7Lb.grid(row=13, column=0, pady=10, sticky=W)
# In[19]:
#Labels for the different algorithms
lrLb = Label(root, text="DecisionTree", fg="black", bg="Light blue", width = 20)
lrLb.config(font=("Times",15,"bold"))
lrLb.grid(row=15, column=0, pady=10,sticky=W)
destreeLb = Label(root, text="RandomForest", fg="black", bg="Light blue", width = 20)
destreeLb.config(font=("Times",15,"bold"))
destreeLb.grid(row=17, column=0, pady=10, sticky=W)
OPTIONS = sorted(l1)
# In[20]:
#Taking breed-name as input from user
NameEn = Entry(root, textvariable=Name)
NameEn.grid(row=6, column=1)
#Taking Symptoms as input from the dropdown from the user
S1 = OptionMenu(root, Symptom1,*OPTIONS)
S1.grid(row=7, column=1)
S2 = OptionMenu(root, Symptom2,*OPTIONS)
S2.grid(row=8, column=1)
S3 = OptionMenu(root, Symptom3,*OPTIONS)
S3.grid(row=9, column=1)
S4 = OptionMenu(root, Symptom4,*OPTIONS)
S4.grid(row=10, column=1)
S5 = OptionMenu(root, Symptom5,*OPTIONS)
S5.grid(row=11, column=1)
S6 = OptionMenu(root, Symptom6,*OPTIONS)
S6.grid(row=12, column=1)
S7 = OptionMenu(root, Symptom7,*OPTIONS)
S7.grid(row=13, column=1)
# In[21]:
#Buttons for predicting the severity level using different algorithms
dst = Button(root, text="Prediction 1", command=DecisionTree,bg="Blue",fg="yellow")
dst.config(font=("Times",15,"bold"))
dst.grid(row=6, column=3,padx=10)
rnf = Button(root, text="Prediction 2", command=randomforest,bg="Blue",fg="yellow")
rnf.config(font=("Times",15,"bold"))
rnf.grid(row=7, column=3,padx=10)
rs = Button(root,text="Reset Inputs", command=Reset,bg="yellow",fg="purple",width=12)
rs.config(font=("Times",15,"bold"))
rs.grid(row=10,column=3,padx=10)
ex = Button(root,text="Exit System", command=Exit,bg="yellow",fg="purple",width=12)
ex.config(font=("Times",15,"bold"))
ex.grid(row=11,column=3,padx=10)
# In[22]:
#Showing the output of different algorithms
t1=Label(root,font=("Times",15,"bold"),text="Decision Tree",height=1,bg="Light green"
,width=40,fg="black",textvariable=pred1,relief="sunken").grid(row=15, column=1, padx=10)
t2=Label(root,font=("Times",15,"bold"),text="Random Forest",height=1,bg="Light green"
,width=40,fg="black",textvariable=pred2,relief="sunken").grid(row=17, column=1, padx=10)
# In[23]:
#calling this function because the application is ready to run
root.mainloop()
# In[ ]:
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment