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

Я правильно и успешно настроил данные обучения и могу выполнить прогноз с ожидаемыми результатами, если определенным образом использую интерфейс API Explorer для 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 ) ) )

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

Примечание, которое он сделал для мультифункциональности, то есть: // Моя модель использует одну особенность, но если вашей модели требуется более одной // функции, просто включите больше значений в массив csvInstance, например:... // $вестиция ->setCsvInstance(массив ($data1, $data2, ..., $dataN));

для меня это означает, что нужно только передать переменную $pretionText как "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 ответ

Решаемые.

Обучение требует, чтобы строки были в кавычках. то есть "новолуние". Прогноз не требует кавычек. Я изменил строку прогноза, чтобы в ней не было кавычек, содержащихся в единственной строке, и все работает.

Другие вопросы по тегам