public function test_scenario2()
 {
     $data = array(array("model" => 'data/iris_model.json', "data_input" => array("petal length" => 3), "prediction" => array(array("count" => 42, "confidence" => 0.4006020980792863, "prediction" => "Iris-versicolor", "probability" => 0.5060240963855421), array("count" => 41, "confidence" => 0.3890868795664999, "prediction" => "Iris-virginica", "probability" => 0.4939759036144578))));
     foreach ($data as $item) {
         $model = new Model($item["model"], self::$api);
         $prediction = $model->predict($item["data_input"], true, false, STDOUT, false, Tree::LAST_PREDICTION, false, false, false, false, false, false, false, false, 'all');
         $this->assertEquals($prediction, $item["prediction"]);
     }
 }
 public function test_scenario2()
 {
     $data = array(array("model" => 'data/iris_model.json', "data_input" => array("petal length" => 3), "prediction" => array(array("count" => 42, "confidence" => 0.4006020980792863, "prediction" => "Iris-versicolor", "probability" => 0.5060240963855421), array("count" => 41, "confidence" => 0.3890868795664999, "prediction" => "Iris-virginica", "probability" => 0.4939759036144578))));
     foreach ($data as $item) {
         print "\nSuccessfully creating a multiple prediction from a local model in a json file\n";
         print "Given I create a local model from a " . $item["model"] . "\n";
         $model = new Model($item["model"], self::$api);
         print "When I create a multiple local prediction for " . json_encode($item["data_input"]) . "\n";
         $prediction = $model->predict($item["data_input"], array('multiple' => 'all'));
         print " Then the multiple local prediction is " . json_encode($item["prediction"]) . "\n";
         $this->assertEquals($prediction, $item["prediction"]);
     }
 }
 public function test_scenario3()
 {
     $data = array(array("filename" => "data/iris.csv", "data_input" => array(), "objective" => "000004", "prediction" => "Iris-setosa", "confidence" => 0.2629), array("filename" => "data/grades.csv", "data_input" => array(), "objective" => "000005", "prediction" => "68.62224", "confidence" => 27.5358), array("filename" => "data/grades.csv", "data_input" => array('Midterm' => 20), "objective" => "000005", "prediction" => "46.69889", "confidence" => 37.276), array("filename" => "data/grades.csv", "data_input" => array('Midterm' => 20, "Tutorial" => 90, "TakeHome" => 100), "objective" => "000005", "prediction" => "28.06", "confidence" => 24.86634));
     foreach ($data as $item) {
         print "I create a data source uploading a " . $item["filename"] . " file\n";
         $source = self::$api->create_source($item["filename"], $options = array('name' => 'local_test_source'));
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $source->code);
         $this->assertEquals(1, $source->object->status->code);
         print "check local source is ready\n";
         $resource = self::$api->_check_resource($source->resource, null, 3000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         print "create dataset with local source\n";
         $dataset = self::$api->create_dataset($source->resource);
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $dataset->code);
         $this->assertEquals(BigMLRequest::QUEUED, $dataset->object->status->code);
         print "check the dataset is ready\n";
         $resource = self::$api->_check_resource($dataset->resource, null, 3000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         print "create model\n";
         $model = self::$api->create_model($dataset->resource);
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $model->code);
         print "check model is ready\n";
         $resource = self::$api->_check_resource($model->resource, null, 3000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         print "And I create a local model";
         $localmodel = new Model($model->resource, self::$api);
         print "When I create a proportional missing strategy prediction for ";
         $prediction = self::$api->create_prediction($model->resource, $item["data_input"], array('missing_strategy' => 1));
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $prediction->code);
         print "Then the prediction for " . $item["objective"] . " is " . $item["prediction"];
         $this->assertEquals($item["prediction"], $prediction->object->prediction->{$item["objective"]});
         print "And I create a local prediction for \n";
         $prediction = $localmodel->predict($item["data_input"], true, false, STDOUT, true, 1);
         print "Then the local prediction is \n";
         $this->assertEquals(is_numeric($prediction->prediction) ? round($prediction->prediction, 5) : $prediction->prediction, $item["prediction"]);
         print "And the local prediction's confidence is \n";
         $this->assertEquals(round($prediction->confidence, 4), round($item["confidence"], 4));
     }
 }
 public function test_scenario6()
 {
     $data = array(array('filename' => 'data/iris_missing2.csv', 'data_input' => array("petal width" => 1), 'objective' => '000004', 'prediction' => 'Iris-setosa', 'confidence' => 0.8064), array('filename' => 'data/iris_missing2.csv', 'data_input' => array("petal width" => 1, "petal length" => 4), 'objective' => '000004', 'prediction' => 'Iris-versicolor', 'confidence' => 0.7847));
     foreach ($data as $item) {
         print "I create a data source uploading a " . $item["filename"] . " file\n";
         $source = self::$api->create_source($item["filename"], $options = array('name' => 'local_test_source'));
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $source->code);
         $this->assertEquals(1, $source->object->status->code);
         print "check local source is ready\n";
         $resource = self::$api->_check_resource($source->resource, null, 20000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         print "create dataset with local source\n";
         $dataset = self::$api->create_dataset($source->resource);
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $dataset->code);
         $this->assertEquals(BigMLRequest::QUEUED, $dataset->object->status->code);
         print "check the dataset is ready " . $dataset->resource . " \n";
         $resource = self::$api->_check_resource($dataset->resource, null, 20000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         print "I create a model with missing splits\n";
         $model = self::$api->create_model($dataset->resource, array("missing_splits" => true));
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $model->code);
         print "check model is ready\n";
         $resource = self::$api->_check_resource($model->resource, null, 20000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         $local_model = new Model($model->resource, self::$api);
         print "When I create a prediction for ";
         $prediction = self::$api->create_prediction($model, $item["data_input"], array('missing_strategy' => 1));
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $prediction->code);
         print "Then the prediction for " . $item["objective"] . " is " . $item["prediction"] . "\n";
         $this->assertEquals($item["prediction"], $prediction->object->prediction->{$item["objective"]});
         print "Then the confidence is \n";
         $this->assertEquals(round($item["confidence"], 4), round($prediction->object->confidence, 4));
         print "And I create a proportional missing strategy local prediction for \n";
         $local_prediction = $local_model->predict($item["data_input"], true, false, STDOUT, true, 1);
         $confidence_value = null;
         $prediction_value = null;
         if (is_object($local_prediction)) {
             $prediction_value = $local_prediction->output;
             $confidence_value = $local_prediction->confidence;
         } else {
             $prediction_value = $local_prediction[0];
             $confidence_value = $local_prediction[1];
         }
         print "Then the local prediction is " . $item["prediction"] . "\n";
         $this->assertEquals($prediction_value, $item["prediction"]);
         print "And the local prediction's confidence is " . $item["confidence"] . "\n";
         $this->assertEquals(round($confidence_value, 4), round($item["confidence"], 4));
     }
 }
 public function test_scenario2()
 {
     $data = array(array('filename' => 'data/iris.csv', 'data_input' => array("petal width" => 0.5), 'prediction' => "Iris-setosa"));
     foreach ($data as $item) {
         print "\nSuccessfully creating a prediction using a shared model\n";
         print "Given I create a data source uploading a " . $item["filename"] . " file\n";
         $source = self::$api->create_source($item["filename"], $options = array('name' => 'local_test_source', 'project' => self::$project->resource));
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $source->code);
         $this->assertEquals(1, $source->object->status->code);
         print "And I wait until the source is ready\n";
         $resource = self::$api->_check_resource($source->resource, null, 20000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         print "And I create dataset with local source\n";
         $dataset = self::$api->create_dataset($source->resource);
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $dataset->code);
         $this->assertEquals(BigMLRequest::QUEUED, $dataset->object->status->code);
         print "And I wait until the dataset is ready " . $dataset->resource . " \n";
         $resource = self::$api->_check_resource($dataset->resource, null, 20000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         print "And I create model\n";
         $model = self::$api->create_model($dataset->resource);
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $model->code);
         print "And I wait until the model is ready\n";
         $resource = self::$api->_check_resource($model->resource, null, 3000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         print "I make the model shared\n";
         $model = self::$api->update_model($model->resource, array('shared' => true));
         $this->assertEquals(BigMLRequest::HTTP_ACCEPTED, $model->code);
         $shared_hash = $model->object->shared_hash;
         $sharing_key = $model->object->sharing_key;
         print "I check the model status using the model\\'s shared url \n";
         $model = self::$api->get_model("shared/model/" . $shared_hash);
         $this->assertEquals(BigMLRequest::FINISHED, $model->object->status->code);
         print "I check the model status using the model\\'s shared key \n";
         $model = self::$api->get_model($model->resource, null, getenv("BIGML_USERNAME"), $sharing_key);
         $this->assertEquals(BigMLRequest::FINISHED, $model->object->status->code);
         print "And I create a local model\n";
         $local_model = new Model($model, self::$api);
         print "When I create a local prediction for " . json_encode($item["data_input"]) . "\n";
         $prediction = $local_model->predict($item["data_input"]);
         print "Then the prediction for is  " . $item["prediction"] . "\n";
         $this->assertEquals($prediction->output, $item["prediction"]);
     }
 }