0. 모델 install
!pip install flask
!pip install werkzeug
1. Flask 모듈 임포트
from flask import Flask
2. Flask객체를 app에 할당
app = Flask(__name__)
3. app객체를 이용해 라우팅 경로를 설정
4. 해당 라우팅 경로로 요청이 올 때 실행할 함수를 바로 밑에 작성해야 함
@app.route("/hello")
def hello():
return "<h1>Hello World!</h1>"
5. 메인 모듈로 실행될 때 플라스크 서버 구동 (서버로 구동한 IP 와 포트를 옵션으로 넣어줄 수 있음)
if __name__ == "__main__":
from werkzeug.serving import run_simple
run_simple('localhost', 9000, app)
Flask는 하나의 cell에 모든 코드가 있어야함.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "<h1>Hello World!</h1>"
if __name__ == "__main__":
from werkzeug.serving import run_simple
run_simple('localhost', 9000, app)
"""실행시킨 후 http://localhost:9000/으로 접근하면 Hello world가 나옴"""
여러 웹 사이트 만들기
from flask import Flask
app = Flask(__name__)
@app.route("/")
def flask():
return "<h1>Hello World!</h1>"
@app.route("/hello")
def hello():
return "<h1>Hello Flash!</h1>"
@app.route("/first")
def first():
return "<h3>Hello First</h3>"
if __name__ == "__main__":
from werkzeug.serving import run_simple
run_simple('localhost', 9000, app)
"""실행시킨 후 http://localhost:9000/ 주소로 접근가능"""
"""실행시킨 후 http://localhost:9000/hello 주소로 접근가능"""
"""실행시킨 후 http://localhost:9000/first 주소로 접근가능"""
URI를 변수로 사용
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "<h1>Hello World!</h1>"
@app.route("/profile/<username>")
def get_profile(username):
return "profile: " + username
@app.route("/first/<username>")
def get_first(username):
return "<h3>Hello " + username + "!</h3>"
if __name__ == "__main__":
from werkzeug.serving import run_simple
run_simple('localhost', 9000, app)
"""실행시킨 후 http://localhost:9000/profile/MH 주소로 접근가능, MH는 변수명 아무거나 가능"""
다른 페이지로 데이터 전송
from flask import Flask, redirect, request
app = Flask(__name__)
"""get방식과 post방식으로 받을 수 있다."""
@app.route("/re", methods=['GET','POST'])
def re():
print(request.method)
if request.method == 'POST':
one_data = request.form['result']
else:
one_data = request.args.get('result')
return "<h1>{}</h1>".format(one_data)
@app.route("/hello")
def hello():
"""쿼리스트링으로 전송"""
return redirect("http://localhost:9000/request?result=123")
if __name__ == "__main__":
from werkzeug.serving import run_simple
run_simple('localhost', 9000, app)
Model 저장 및 로딩
from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier
import pickle # 데이터 저장 모듈
iris = load_iris()
X = iris.data
y = iris.target
knn = KNeighborsClassifier()
knn.fit(X,y)
'''학습된 모델 저장'''
f = open('knn.pkl','wb')
pickle.dump(knn,f)
'''학습된 모델 로딩'''
f2 = open('knn.pkl','rb')
load_model = pickle.load(f2)
load_model.predict([[1,2,1,2]])
python dictionary to JSON
from json import JSONEncoder,JSONDecoder
dd = {'aa':0}
dd
json_str = JSONEncoder().encode(dd)
json_str
Ajax / cross domain 이슈 해결
from flask import Flask, redirect, request, Response
'''학습된 모델 로딩'''
app = Flask(__name__)
f2 = open('knn.pkl','rb')
load_model = pickle.load(f2)
@app.route("/re/<sw>/<sh>/<pw>/<ph>", methods=['POST'])
def re(sw,sh,pw,ph):
## 모델 예측
rs = load_model.predict([[sw,sh,pw,ph]])
result_dic = {}
result_dic['result'] = int(rs[0])
resp = Response(JSONEncoder().encode(result_dic),
mimetype='application/json')
resp.headers['Access-Control-Allow-Origin'] = '*'
resp.headers['Access-Control-Allow-Methods'] = 'POST'
resp.headers['Access-Control-Allow-Headers'] = 'Origin'
return resp
if __name__ == "__main__":
from werkzeug.serving import run_simple
run_simple('localhost', 9000, app)
'Programming > Machine Learning' 카테고리의 다른 글
데이터 값의 치환 replace (0) | 2020.03.14 |
---|---|
정밀도, 재현율, F1score (0) | 2020.03.11 |
네이버 영화리뷰 감성분석 (0) | 2020.02.17 |
Sentiment Analysis(영화리뷰데이터) (0) | 2020.02.17 |
Titanic데이터활용_DecisionTree_Ensemble (0) | 2020.02.17 |