адаптировать код Python в моем приложении Django, чтобы вызвать модель и сделать прогноз - PullRequest
0 голосов
/ 10 мая 2019

Я нашел некоторый код, который обучает / предсказывает простую модель машинного обучения с каркасом отдыха Django, я пытался адаптировать его с моим приложением, поэтому я не знаю, как это сделать, но я что-то пробовал.

Я обучил свою модель с помощью jypyter, сериализовал ее и поместил в папку в моем приложении с именем models, я попытался вызвать ее, но она показывает мне FileNotFoundError.

Так что это оригинальный код, который я нашел:

class Train(views.APIView):
    def post(self, request):
        iris = datasets.load_iris()
        mapping = dict(zip(np.unique(iris.target), iris.target_names))

        X = pd.DataFrame(iris.data, columns=iris.feature_names)
        y = pd.DataFrame(iris.target).replace(mapping)
        model_name = request.data.pop('model_name')

        try:
            clf = RandomForestClassifier(**request.data)
            clf.fit(X, y)
        except Exception as err:
            return Response(str(err), status=status.HTTP_400_BAD_REQUEST)

        path = os.path.join(settings.MODEL_ROOT, model_name)
        with open(path, 'wb') as file:
            pickle.dump(clf, file)
        return Response(status=status.HTTP_200_OK)


class Predict(views.APIView):
    def post(self, request):
        predictions = []
        for entry in request.data:
            model_name = entry.pop('model_name')
            path = os.path.join(settings.MODEL_ROOT, model_name)
            with open(path, 'rb') as file:
                model = pickle.load(file)
            try:
                result = model.predict(pd.DataFrame([entry]))
                predictions.append(result[0])

            except Exception as err:
                return Response(str(err), status=status.HTTP_400_BAD_REQUEST)

        return Response(predictions, status=status.HTTP_200_OK)

Я удалил весь класс 'train' и сделал это в jupyter, поэтому у меня теперь есть сериализованный файл с именем "model1".

И это мой настоящий класс предсказания:

class Predict(views.APIView):
    def post(self, request):
        predictions = []
        for entry in request.data:

            path = ('/Users/DELL/TestML/models/model1')
            with open(path, 'rb') as file:
                model = pickle.load(file)
            try:
                result = model.predict(pd.DataFrame([entry]))
                predictions.append(result[0])

            except Exception as err:
                return Response(str(err), status=status.HTTP_400_BAD_REQUEST)

        return Response(predictions, status=status.HTTP_200_OK)

Мои urls.py:

from App.views import Predict
from django.conf.urls import url


app_name = 'App'

urlpatterns = [
    url(r'^predict/$', Predict.as_view(), name="predict"),

]

Я ожидаю, что вывод будет функцией прогнозирования, но фактический вывод - FileNotFoundError в / App / Forext /

Если кто-то может помочь мне сделать это лучше и заставить его работать, или что-нибудь еще может помочь мне сделать прогноз с Джанго.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...