0
votes

I am using the Google Prediction API in PHP.

The authorization is done successfully using OAuth 2.0. I have my data in csv files on the cloud. I gave its location using setDataLocation method in Training class. But I got the following error while training/inserting data:

Fatal error: Uncaught exception 'apiException' with message 'Unknown function: ->->insert()' in C:\xampp\htdocs\google-api-php-client\src\service\apiServiceResource.php:81 Stack trace: #0 C:\xampp\htdocs\google-api-php-client\src\contrib\apiPredictionService.php(60): apiServiceResource->__call('insert', Array) #1 C:\xampp\htdocs\google-api-php-client\examples\analytics\new2.php(51): TrainedmodelsServiceResource->insert(Object(apiPredictionService), Array) #2 {main} thrown in C:\xampp\htdocs\google-api-php-client\src\service\apiServiceResource.php on line 81

This is my code snippet:

if ($client->getAccessToken()) {
    $data = array();
    $buzzy = new Training();
    $predictionService = new apiPredictionService($client);
    $trainedmodels = $predictionService->trainedmodels;
    $buzzzy = new TrainedmodelsServiceResource();
    $me = $buzzy->setStorageDataLocation('my_data.csv');
    $mee = $buzzy->getStorageDataLocation();
    // $ma = $buzzy->getTrainingStatus();
    $setid_in = $buzzy->setId($buzzy->getStorageDataLocation());
    $setid_out = $buzzy->getId();
    echo $setid_out;
    //print_r($predictionService);
    //$insert_1 = $buzzzy->insert($buzzy,array());

    // This is line 81 in my code:
    $insert2=$trainedmodels->insert($predictionService,array());
}

I am unable to proceed further. I plan to train and then call predict function.

1

1 Answers

1
votes

I just wrote a test program to make a prediction using PHP and was able to get this working. Here's the magic sequence:

   $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));

This displays the unformatted JSON response from the prediction request, like so:

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 ) ) )