in api/views.py [0:0]
def predict(self, request, format=None):
try:
classifier = self.request.query_params.get("classifier")
region = self.request.query_params.get("dataset", "german")
version = self.request.query_params.get("version", "0.0.1")
status = self.request.query_params.get("status", "production")
print(request)
if version is None:
raise bad_request(
request=request,
data={
"error": "Missing required query parameter: version"
})
if classifier is None:
raise bad_request(
request=request,
data={
"error": "Missing required query parameter: classifier"
})
if classifier in [
'manova', 'linearRegression', 'polynomialRegression'
]:
prediction = stat_score(request.data, classifier)
algorithm = None
else:
algorithm: Algorithm = Algorithm.objects.filter(
classifier=classifier,
status=status,
version=version,
dataset__name=region)[0]
if algorithm is None:
raise bad_request(
request=request,
data={"error": "ML algorithm is not available"})
classifier = registry.classifiers[algorithm.id]
prediction = classifier.compute_prediction(request.data)
if "label" in prediction:
label = prediction["label"]
else:
label = prediction['method']
prediction_request = PredictionRequest(input=json.dumps(
request.data),
response=prediction,
prediction=label,
feedback="",
algorithm=algorithm)
prediction_request.save()
prediction["request_id"] = prediction_request.id
return Response(prediction)
except Exception as e:
raise APIException(str(e))