Правильный формат для мультифункционального массива csvinstance в API прогнозирования Google

Я правильно и успешно настроил данные обучения и могу выполнить прогноз с ожидаемыми результатами, если я определенным образом использую интерфейс проводника API для API прогнозирования Google.

Я также могу выполнить прогнозирование одной функции с localhost на основе примеров, предоставленных Google в php.

В моих тренировочных данных есть 51 функция, по которой я хочу выполнить прогноз. Модель надежна и вернула беспристрастный рейтинг точности 92%. У меня нет проблем с обученной моделью, основанной на 25000 экземплярах.

В несколько связанном с этим вопросе Марк Коэн привел следующий пример на 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 ) ) )

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

Замечание, которое он сделал относительно мультифункции, т.е. setCsvInstance (массив ($ 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);

Спасибо.


person user1970690    schedule 11.01.2013    source источник


Ответы (1)


Решено.

Обучение требует, чтобы строки были заключены в кавычки. т.е. «Новолуние». Прогнозирование не требует кавычек. Я изменил строку прогноза, чтобы не заключать в кавычки имеющуюся у меня функцию одной строки, и все работает.

person user1970690    schedule 13.01.2013