谷歌预测api中多特征csvinstance数组的正确格式

时间:2013-01-11 17:46:49

标签: google-prediction

如果我以某种方式为Google预测API使用API​​资源管理器界面,我已经正确且成功地设置了培训数据,并且可以运行预期结果的预测。

我还可以根据google在php中提供的示例,从localhost运行单个功能预测。

我的训练数据有51项功能,我想对其进行预测。该模型是健全的,并且返回了无偏92%的准确度等级。我对基于25000个实例的训练模型没有任何问题。

在一个有点相关的问题中,Marc Cohen在php中给出了以下示例来运行预测,该预测适用于语言演示文件或任何单个特征预测。

//------------------

我刚刚编写了一个测试程序来使用PHP进行预测,并且能够实现这一目标。这是神奇的序列:

   $id = "your-model-id-goes-here";
   $predictionText = "This is a test";
   $predictionData = new InputInput();
   $predictionData->setCsvInstance(array($predictionText));
   // My model takes a single feature but if your model needs more than one 
   // feature, simply include more values in the csvInstance array, like this...
   // $predictionData->setCsvInstance(array($data1, $data2, ..., $dataN));
   $input = new Input();
   $input->setInput($predictionData);
   print_r($predictionService->trainedmodels->predict($id, $input));

这将显示预测请求中未格式化的JSON响应,如下所示:

Array ( [kind] => prediction#output [id] => languages [selfLink] =>    
https://www.googleapis.com/prediction/v1.4/trainedmodels/languages/predict 
[outputLabel] => French [outputMulti] => Array ( [0] => Array ( [label] => 
English [score] => 0.333297 ) [1] => Array ( [label] => French [score] => 
0.339412 ) [2] => Array ( [label] => Spanish [score] => 0.327291 ) ) )

// --------------------

他已经做了多重功能的说明 ie://我的模型只需要一个功能,但是如果你的模型需要不止一个    //功能,只需在csvInstance数组中包含更多值,就像这样......    // $ predictionData-> setCsvInstance(array($ data1,$ data2,...,$ dataN));

对我来说意味着只需要传递$ predictionText变量 “Feature_1”,“Feature_2”,“Feature_3”,.....“Feature_N”,其中一个很不错。

我使用的数据主要是数字。例如:69,13,10,9,101,69,94,96,96,96 ...... 9我尝试使用和不使用引号但是一直得到相同的预测。

如果我使用API​​资源管理器并在其中输入一个新的数组元素,以便预测所有数据,即:

"input": {
"csvInstance": [

"84",

"63",

"30",

"30",

...........

它会预测正确答案。

如果我使用资源管理器并按照Marcs示例输入数据。即:"84","63","30","30","207","83","87","94","94","94","94","94","94","94","38","57","143","144","164","164","164","164","164"......... 相同的数据将给出完全不同的结果,第二种方法总是返回相同的结果。

显然我在这里做错了。我已经尝试了所有的php json编码选项和其他任何我能想到的格式正确的格式,以便在我的PHP脚本或API浏览器中工作,但无济于事。

任何人都可以告诉我如何正确格式化$predictionText

我的代码如下。 (我尝试过使用和不使用引号和纯数字)

    $predictionText = '84,63,30,30,207,83,87,94,94,94,94,94,94,94,38,57,143,144,164,164,164,164,164,"New Moon",115,221,31,62,-14,-106,-43,-4,43,-174,-224,25,93,142,78,87,29,-65,44,33,34,19,16,14,13,12,11';

$predictionData = new Google_InputInput();
$predictionData->setCsvInstance(array($predictionText) ); 
$input = new Google_Input();    
$input->setInput($predictionData);   
$result = $predictionService->trainedmodels->predict($id, $input);
print("</div><br><br><h2>Prediction Result:</h2>");
print_r($result);

谢谢。

1 个答案:

答案 0 :(得分:2)

解决。

培训要求字符串在引号中。即“新月”。 预测不需要引号。 我已经将预测字符串更改为没有关于我所拥有的单字符串功能的引号,并且一切正常。