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