-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathapp.py
87 lines (72 loc) · 3 KB
/
app.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
from flask import *
from flask.scaffold import _matching_loader_thinks_module_is_package
from predict import make_predictions
from xgboost import XGBClassifier
# from flask_cors import CORS
app = Flask(__name__)
@app.route('/', methods=['GET','POST'])
def index():
# return "Hello, World!"
return render_template('index.html')
@app.route('/predict', methods=['GET','POST'])
def predict():
if request.method == 'POST':
data_input = request.get_json()
data = {}
data["person_age"] = int(data_input['data']['person_age'])
data["person_income"] = int(data_input['data']['person_income'])
data["person_home_ownership"] = data_input['data']['person_home_ownership']
data["person_emp_length"] = float(data_input['data']['person_emp_length'])
data["loan_intent"] = data_input['data']['loan_intent']
data["loan_grade"] = data_input['data']['loan_grade']
data["loan_amnt"] = int(data_input['data']['loan_amnt'])
data["loan_int_rate"] = float(data_input['data']['loan_int_rate'])
data["loan_percent_income"] = float(data_input['data']['loan_percent_income'])
data["cb_person_default_on_file"] = data_input['data']['cb_person_default_on_file']
data["cb_person_cred_hist_length"] = int(data_input['data']['cb_person_cred_hist_length'])
result = make_predictions(data)
result = {
'model':'XGB-Credit-Risk',
"version": '1.0.0',
"prediction": f"{result['data'][0]['proba']} {result['data'][0]['pred']}"
}
return jsonify(result)
# data = {
# "person_age":person_age,
# "person_income":person_income,
# "person_home_ownership":person_home_ownership,
# "person_emp_length":person_emp_length,
# "loan_intent":loan_intent,
# "loan_grade":loan_grade,
# "loan_amnt":loan_amnt,
# "loan_int_rate":loan_int_rate,
# "loan_percent_income":loan_percent_income,
# "cb_person_default_on_file":cb_person_default_on_file,
# "cb_person_cred_hist_length":cb_person_cred_hist_length
# }
data = request.get_json()
result = make_predictions(data)
result = {
'model':'XGB-Credit-Risk',
"version": '1.0.0',
'score_proba': result['data'][0]['proba'],
'prediction': result['data'][0]['pred'],
'result': str(round(result['data'][0]['proba'], 3))
# "score_proba":result[0],
# TypeError: Object of type float32 is not JSON serializable --> use str(result[0])
}
print(result)
return jsonify(result)
@app.route('/predict-api', methods=['POST'])
def predict_api():
data = request.get_json()
result = make_predictions(data)
result = {
'model':'XGB-Credit-Risk',
"version": '1.0.0',
"prediction": f"{result['data'][0]['proba']} {result['data'][0]['pred']}"
}
print(result)
return jsonify(result)
if __name__ == '__main__':
app.run(port=5000, debug=True)