public function test_scenario2() { $data = array(array('filename' => 'data/iris_anomalous.csv', 'rows' => 1)); 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 an anomaly detector with (\\d+) anomalies from a dataset\n"; $anomaly = self::$api->create_anomaly($dataset->resource, array('seed' => 'BigML', 'top_n' => $item["rows"])); print "I wait until the anomaly detector is ready\n"; $resource = self::$api->_check_resource($anomaly->resource, null, 3000, 30); $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]); print "I create a dataset with only the anomalies\n"; $local_anomaly = new Anomaly($anomaly->resource, self::$api); $new_dataset = self::$api->create_dataset($dataset->resource, array('lisp_filter' => $local_anomaly->anomalies_filter())); $this->assertEquals(BigMLRequest::HTTP_CREATED, $new_dataset->code); $this->assertEquals(BigMLRequest::QUEUED, $new_dataset->object->status->code); print "check the dataset is ready " . $new_dataset->resource . " \n"; $resource = self::$api->_check_resource($new_dataset->resource, null, 20000, 30); $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]); $dataset = self::$api->get_dataset($new_dataset->resource); print "I check the anomaly detector stems from the original dataset\n"; $this->assertEquals($dataset->object->rows, $item["rows"]); } }
public function test_scenario7() { $data = array(array('filename' => 'data/tiny_kdd.csv', 'data_input' => array("000020" => 255.0, "000004" => 183.0, "000016" => 4.0, "000024" => 0.04, "000025" => 0.01, "000026" => 0.0, "000019" => 0.25, "000017" => 4.0, "000018" => 0.25, "00001e" => 0.0, "000005" => 8654.0, "000009" => 0, "000023" => 0.01, "00001f" => 123.0), 'score' => 0.68782)); 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 "Then I create an anomaly detector from a dataset\n"; $anomaly = self::$api->create_anomaly($dataset->resource); print "I wait until the anomaly detector is ready\n"; $resource = self::$api->_check_resource($anomaly->resource, null, 3000, 30); $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]); $local_anomaly = new Anomaly($anomaly->resource, self::$api); $anomaly_score = self::$api->create_anomaly_score($anomaly->resource, $item["data_input"]); $this->assertEquals(BigMLRequest::HTTP_CREATED, $anomaly_score->code); $this->assertEquals(round($item['score'], 5), round($anomaly_score->object->score, 5)); $local_anomaly_score = $local_anomaly->anomaly_score($item["data_input"], false); $this->assertEquals(round($item['score'], 5), round($local_anomaly_score, 5)); } }