Правильный формат для мультифункционального массива 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 ответ
Решаемые.
Обучение требует, чтобы строки были в кавычках. то есть "новолуние". Прогноз не требует кавычек. Я изменил строку прогноза, чтобы в ней не было кавычек, содержащихся в единственной строке, и все работает.