Я нашел некоторый код, который обучает / предсказывает простую модель машинного обучения с каркасом отдыха 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 /
Если кто-то может помочь мне сделать это лучше и заставить его работать, или что-нибудь еще может помочь мне сделать прогноз с Джанго.