-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmy.py
108 lines (94 loc) · 3.16 KB
/
my.py
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
from flask import Flask, redirect, url_for, request, jsonify
import pickle
import socket
import json
import numpy as np
from collections import OrderedDict
import sklearn
import random
app = Flask(__name__)
# API SUMMARY
# API1: patient_details_api [POST and GET]
# API2: diagonized_medicines_api [POST GET and PUT]
# API3: diagnosis_keywords_api [POST GET and PUT]
@app.route('/prediction', methods=['POST'])
def prediction():
requestData = request.json
print(requestData)
data = requestData['val']
if request.method == 'POST':
s = ['skin_rash', 'continuous_sneezing', 'acidity', 'fatigue', 'nausea', 'loss_of_appetite',
'chest_pain', 'fast_heart_rate', 'bladder_discomfort', 'muscle_pain', 'prognosis']
diseases = ['Allergy', 'Cold', 'Dengue', 'Fungal infection', 'Malaria',
'Migrane', 'Pneumonia', 'Typhoid', 'Urinary tract infection', 'Tuberculosis']
symptoms = []
for i in range(0, 10):
if data[i] == 1:
symptoms.append(s[i])
model = pickle.load(open('medpredMLP.pickle', 'rb'))
# dummydata = model.predict([data])
# d = str(dummydata[0])
# print(type(d), d)
with open('Medicine.json') as json_file:
jdata = json.load(json_file)
# print(jdata)
# data = jdata[d]
# data = jsonify(dummydata)
class_probs = np.array(model.predict_proba([data]))
i, max1 = np.argsort(np.max(class_probs, axis=0)
)[-1], class_probs[0][i]
j, max2 = np.argsort(np.max(class_probs, axis=0)
)[-2], class_probs[0][i]
# print(ddata)
dis1 = jdata[diseases[i]][1]
prid1 = []
for u in dis1:
med = dis1[u]
priority = (med[0]-3*med[1]-7*med[2])*max1
prid1.append(priority)
dis1[u][-1] = priority
print(dis1)
np.array(prid1)
k = np.argsort(prid1)[::-1]
print(k)
# for key,values in dis1.items():
klist = [x for x in dis1]
# print(klist)
flist = []
for o in k:
flist.append(klist[o])
# print(flist)
# np.sort(prid1)
ndata = OrderedDict()
for t in flist:
ndata[t] = dis1[t]
# ndata = ndata.append({t:dis1[t]})
print(ndata)
dis2 = jdata[diseases[j]][1]
# print(dis2)
prid2 = []
for u in dis2:
med = dis2[u]
priority = (med[0]-3*med[1]-2*med[2])*max2
prid2.append(priority)
dis2[u][-1] = priority
l = np.argsort(prid2)[::-1]
llist = [x for x in dis2]
# print(llist)
fllist = []
for o in l:
fllist.append(llist[o])
# print(fllist)
# print(dis2)
for t in fllist:
ndata[t] = dis2[t]
print(ndata)
# ndata = {d: data}
# list1 = []
# list2 = []
# list1.append(ndata)
# list1.append(symptoms)
np.random.seed(0)
return json.dumps([ndata, symptoms])
if __name__ == '__main__':
app.run(host='localhost', port=5000, debug=True)