我通过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;浴室;阳台;
答案 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代码中写了双引号,这有点令人困惑。