为什么我无法预测模型?

时间:2018-09-10 05:22:15

标签: php python json machine-learning scikit-learn

我通过LR训练数据设计了一个模型。然后我使用这种模型来预测新数据。我将训练好的模型下载到本地文件中。我用于预测的脚本如下 prediction.php

<?php
$area_type=0 ;$location = 0;$size= 0; $total_sqft=0;$bath=1;$balcony=1;
$area_type =  $_POST['area_type'];
$location = $_POST['location'];
$size= $_POST['size'];
$total_sqft=$_POST['total_sqft'];
$bath=$_POST['bath'];
$balcony=$_POST['balcony'];

$jsonf = "'{\"data\":[$area_type,$location,$size,$total_sqft,$bath,$balcony]}'";
$shells = "/usr/bin/python3 -W ignore /predict.py $jsonf";

$result = exec($shells);
echo $result;

?>

predict.py

import sys, json
import numpy as np
from sklearn.externals import joblib


print(sys.argv)
data = json.loads(sys.argv[1])
print(data)
data = np.array(data['data'])
print(data)
sav = joblib.load('/LR_model.ml')
pred = sav.predict(data.reshape(1,-1))
print(pred)
result = int(round(pred[0],0))
result_a = format(abs[result],',')
print(result_a)

当我尝试以python3 Forecast.py的方式运行Forecast.py脚本

{'data': [1, 1180, 2, 5000, 1, 1]}

我得到如下错误

  

从None提高JSONDecodeError(“期望值”,s,err.value)   json.decoder.JSONDecodeError:期望值:第1行第1列(字符0)

那么我该如何预测新数据的价格。任何解决此错误的建议将非常有帮助。 LR_model.ml是我的模型,各种变量是:

  

area_type; location; size; total_sqft;浴室;阳台;

1 个答案:

答案 0 :(得分:0)

我建议您使用对象,然后使用json_encode()进行编码

$object = new stdClass();
$object->data = [$area_type, $location, $size, $total_sqft, $bath, $balcony];
$jsonf = json_encode($object));

用这种方式更容易理解json输出


在您写问题时

  

{'数据':[1,1180,2,5000,1,1]}

由于单引号是一个错误的json。

  

$ jsonf =“'{\”数据\“:[$ area_type,$ location,$ size,$ total_sqft,$ bath,$ balcony]}'”;

但是您在php代码中写了双引号,这有点令人困惑。