ML 모델 생성 및 RESTful API로 사용하기

저는 현지에서 데이터 과학과 기계 학습에 전념하는 회사에서 실습을 시작했습니다. 교육의 일부로서 제 임무는 간단한 무지개 분류 모델을 만들고 주어진 꽃잎과 꽃받침의 너비와 길이에 따라 무지개 유형의 유형(꽃색, 비지니아와 강모)을 식별하는 것입니다.기계 학습 배경이 매우 적은 사람으로서 나는 대량의 연구와 읽기를 해야만 필요한 출력을 얻을 수 있지만, 이 모든 것은 가치가 있다.

본고에서 파이톤을 사용하여 무지개 분류 모델을 만드는 절차를 공유하고 RESTful API를 통해 서비스를 제공할 것입니다.사용법을 보여주기 위해 API에 연결하는 간단한 PHP 인터페이스도 만들었습니다.

모델 생성🤖


기계 학습에서 하나의 데이터 훈련 모델을 사용하여 특정 모델을 식별한다.파이톤의 오픈소스 머신 학습 라이브러리Sci-Kit Learn는 감독과 무감독 학습을 위한 모형 교육을 제공한다.그것은 사용하기에 매우 간단할 뿐만 아니라, 많은 강좌를 배우기 시작해야 한다.
먼저 pip을 사용하여 Sci 키트 라이브러리를 설치합니다.
pip install -U scikit-learn
설치가 완료되면 Sci Kit Learn에서 작성한 Iris 데이터 세트를 사용하여 model.py라는 파일을 만듭니다.
from sklearn import datasets
iris = datasets.load_iris()
참고: 자체 데이터 세트를 사용할 수 있지만 Sci Kit에서 모델을 최대한 효율적으로 이해하고 훈련할 수 있도록 미리 처리하고 포맷해야 합니다.
다음은 데이터 집합을 데이터와 목표로 나눈다.데이터는 꽃잎과 꽃받침의 너비와 길이로 구성되어 있으며 단위는 센티미터이고 목표나 라벨은 예측할 유형이다.무지개 분류에 있어 목표는 색깔, 빅토리아, 강모로 구성된다.
iris_data = iris.data
iris_target = iris.target
훈련 모델에 앞서 다른 한쪽은 실제 모델 훈련에 사용하고 다른 한쪽은 모델을 검증하는 데 사용한다(다시 말하면 테스트 모델의 정확성).
이 기능은 train_test_split를 사용하여 수행할 수 있습니다.
from sklearn.model_selection import train_test_split
iris_data_train, iris_data_test, iris_target_train, iris_target_test = train_test_split(iris_data, iris_target, test_size = .5)
test_size 매개 변수는 테스트 데이터 집합의 크기를 지정합니다.
이제 우리는 모델을 구축하기 시작할 수 있다.이 모델에 사용할 수 있는 분류 알고리즘이 많은데 K-최근 이웃을 선택했습니다. 정확도가 훨씬 높기 때문입니다.
from sklearn import neighbors
classifier = neighbors.KNeighborsClassifier()
여기서 우리는 훈련 모형을 시작할 수 있다.
classifier.fit(iris_data_train, iris_target_train)
여기 있다!우리는 훈련을 거친 무지개 분류 모델을 가지고 있다.우리는 accuracy_score를 사용하여 모델의 정밀도 레벨을 인쇄할 수 있습니다.
from sklearn.metrics import accuracy_score
predict_iris = classifier.predict(iris_data_test)
print(accuracy_score(iris_target_test, predict_iris))
위에서 말한 바와 같이 이 모델의 정확도는 97%이다!위대하다

플라스크 API 생성하기⚙️


Flask API를 생성하려면 Pickle라는 이름의 Python 라이브러리를 사용하여 모델을 서열화해야 합니다.네트워크를 통해 디스크에 쉽게 보내거나 저장할 수 있도록 '산세척'python 코드를 통해 바이트 흐름으로 변환됩니다.Unpickling은 반대로 python 파일을 원래 상태로 변환합니다.

pip를 사용하여 Pickle을 설치할 수 있습니다.
pip install pickle-mixin
우리의 무지개 분류 모델은 다음 코드'pickle'또는 서열화를 사용할 수 있습니다.
import pickle
pickle.dump(classifier, open("iris_model", "wb"))
이렇게 하면 iris_model 파일이 생성됩니다.그것을 열려고 하면 식별할 수 없는 문자를 표시합니다.
이제 모델을 수정했으므로 Flask API에서 시작할 수 있습니다!
다른 Python 라이브러리와 마찬가지로 flask도 설치했습니다.
pip install flask
그리고 app.py 라는 메인 프로그램 파일을 만듭니다.내부에서 Flask API에 필요한 라이브러리를 가져왔습니다.
from flask import Flask, jsonify
from flask_restful import reqparse, abort, Api, Resource

app = Flask(__name__)
api = Api(app)
그런 다음 무지개 분류 모델을 로드하고 선택 해제합니다.
import pickle
loaded_model = pickle.load(open("iris_model", 'rb'))
나중에 프런트엔드 인터페이스를 만들 때 사용자 입력을 Iris API로 보내는 방법이 필요합니다.이를 위해 URL에 매개 변수를 만들고 사용자 입력을 전달합니다.우리가 필요로 하는 입력은 꽃잎과 꽃받침의 너비와 길이이다. 이러한 정보에 따라 이 모델은 우리가 가리키는 무지개 꽃의 유형을 예측할 수 있다.
다음 코드를 사용하여 매개변수를 생성합니다.
parser = reqparse.RequestParser()
parser.add_argument('slength')
parser.add_argument('swidth')
parser.add_argument('plength')
parser.add_argument('pwidth')
일단 조회를 설정하면 우리는 모델을 호출하여 주어진 입력에 따라 무지개 유형을 예측해야 한다.그런 다음 URL 매개 변수 값을 가져온 다음 모델에 삽입하여 예측하는 requestIris라는 클래스를 만듭니다.예측 결과는 정수 형식으로 나타날 것이기 때문에 0은 setosa, 1은versicolor, 2는virginica이다.또한 반환된 데이터는 JSON 형식이어야 합니다.
전체 코드는 다음과 같습니다.
class requestIris(Resource):
    def get(self):
        args = parser.parse_args()
        slength= args['slength']
        swidth = args["swidth"]
        plength = args["plength"]
        pwidth = args["pwidth"]
        prediction = (loaded_model.predict([[slength, swidth, plength, pwidth]])).tolist()
        if(prediction[0] == 0):
            type="setosa"
        elif(prediction[0] == 1):
            type="versicolor"
        else:
            type="virginica"
        serve_model = {"Iris Type":type}
        print(serve_model)
        return jsonify(serve_model)
그런 다음 API에 리소스를 추가하고 리소스의 라우트를 작성합니다.
api.add_resource(requestIris, '/classify')
마지막으로 Flask 애플리케이션을 실행하기 위해 코드를 추가했습니다.
if __name__ == '__main__':
   app.run()
만세!저희가 지금 홍채 분류 API가 생겼어요!
API는 로컬에서 실행하거나 Heroku에 게시할 수 있습니다.나는 여기서 나의 관점을 발표했다.
https://iris-classification-model.herokuapp.com/
다음 기사에서는 PHP 프런트엔드 인터페이스를 소개하여 API의 어플리케이션을 보여 드리겠습니다.기대해주세요!

좋은 웹페이지 즐겨찾기