BankApi / main.py
Salif SAWADOGO
'test'
030fb97
from flask import Flask
from flask import request
import numpy as np
import pickle
import pandas as pd
import flasgger
from flasgger import Swagger
from flasgger import Swagger, LazyString, LazyJSONEncoder, swag_from
application=Flask(__name__) # debut de l'app
# pas tres import: habillage det affivhage
application.json_encoder = LazyJSONEncoder
swagger_template = dict(
info = {
'title': LazyString(lambda: "Modèle d'authentification de billets de banque"),
'description': LazyString(lambda: " Les informations statistiques extraites nous permettra de savoir si les billets sont authentiques"),
},
host = LazyString(lambda: request.host)
)
swagger_config = {
"headers": [],
"specs": [
{
"endpoint": '',
"route": '/',
"rule_filter": lambda rule: True,
"model_filter": lambda tag: True,
}
],
"static_url_path": "/flasgger_static",
"swagger_ui": True,
"specs_route": "/apidocs/"
}
swagger= Swagger(application, template=swagger_template, config=swagger_config)
# Swagger(application)
# chargement du modèle
modele=pickle.load(open("model.pkl","rb"))
@application.route('/')
def welcome():
return "Bienvenu dans le site d'authentification"
@application.route('/predict',methods=["Get"])
def predict_note_authentication():
"""Let's Authenticate the Banks Note
This is using docstrings for specifications.
---
parameters:
- name: variance
in: query
type: number
required: true
- name: skewness
in: query
type: number
required: true
- name: curtosis
in: query
type: number
required: true
- name: entropy
in: query
type: number
required: true
responses:
200:
description: The output values
"""
variance = request.args.get("variance")
skewness = request.args.get("skewness")
curtosis = request.args.get("curtosis")
entropy = request.args.get("entropy")
prediction = modele.predict([[variance, skewness, curtosis, entropy]])
print(prediction)
return "Alors vraissemblablement la réponse est "+str(prediction)
@application.route('/predict_file',methods=["POST"])
def predict_note_file():
"""Let's Authenticate the Banks Note
This is using docstrings for specifications.
---
parameters:
- name: file
in: formData
type: file
required: true
responses:
200:
description: The output values
"""
df_test=pd.read_csv(request.files.get("file"))
print(df_test.head())
prediction=modele.predict(df_test)
return str(list(prediction))
if __name__=='__main__': # si 1 est exécuté alors l'application (codé en bas) sera mis en exécution
application.run()