본문 바로가기

프로그래밍/Python

Django Rest Framework 로 Scikit-Learn(사이킷런) 학습 및 예측 어플리케이션 웹상에서 이용하기

우선 학습 모델들을 저장할 디렉토리(models)를 만들어 주자

 

 

1. settings.py에 models루트 추가 및 INSTALLED APPS에 rest_framework 와 앞서 만든 어플리케이션(analysis_web) 추가

 

 

2. 프로젝트와 어플리케이션 각각의 urls.py 설정

cus_analysis/admin.py

 

analysis_web/urls.py

 

3. 학습 모델 생성 및 이를 기반으로 한 예측(views.py)

데이터 : sklearn 라이브러리의 iris datasets 모듈 (load_iris 사용하여 데이터 적재)

 

학습 알고리즘 : RandomForestClassifier

 

학습과 예측에 이용될 매개변수 전송방식  : json 형태로 post 함수(json 형태로 더 많은 매개변수들을 담아 보낼 수 있다)를 통하여 전송 

 

Train class : iris datasets 을 토대로 RandomForestClassifier을 통하여 학습된 모델을,

앞서 세팅하여 준 models(MODEL_ROOT = os.path.join(BASE_DIR, 'models'))에 사용자로부터 입력받은 모델명으로 저장

 

Predict class : 사용자로부터 예측에 사용하고 싶은 모델명과 여러 값들을 토대로 예측 

(아래 예제의 경우 꽃잎과 꽃받침의 너비와 길이를 토대로 붓꽃의 종류 setosa, versicolor, virginica 중 예측)

 

 

4. Rest 방식(Django Rest Framework)으로 웹 상에서 학습과 예측을 위한 매개변수 전달하기

 

*Django Rest Framework은 머신러닝 모델들을 API 호출을 통하여 RESTFul 웹 서비스를 활용할 수 있게 해주는 프레임워크이다.

 

1) 학습

json 데이터를 post요청으로 전달하면 학습된 모델을 얻을 수 있다.

 

2) 예측 결과

 

json 데이터를 post요청으로 전달하면 해당 데이터의 예측 값을 얻을 수 있다.