def test_kfold_cv(self): trainer = TrainModelCV([LogisticRegression, classification_error, None, (), {'lam':0.5}], X=self.X, y=self.y, folds=self.folds) errors = trainer.run() self.assertTrue(np.abs(errors[errors.keys()[0]]['train'] - 0.063340259665816398) < 1e-12) self.assertTrue(np.abs(errors[errors.keys()[0]]['test'] - 0.049633305762338022)< 1e-12)
def test_aggregate_error(self): # test an aggregate error function (that returns more than one value) trainer = TrainModelCV([LogisticRegression, TestTrainModelCV.agg_err, None, (), {'lam':0.5}], X=self.X, y=self.y, Xtest=self.X[:50, :], ytest=self.y[:50]) errors = trainer.run() self.assertTrue(np.abs(errors[errors.keys()[0]]['train']['accuracy'] - 0.06) < 1e-8) self.assertTrue(np.abs(errors[errors.keys()[0]]['train']['auc'] - 0.99310661764705888) < 1e-8)
def test_map_train_model(self): trainer = TrainModelCV([LogisticRegression, classification_error, '/tmp/logistic.json', (), {'lam':0.5}], X=self.X, y=self.y) errors = trainer.run() # load model trained_model = LogisticRegression.load_model('/tmp/logistic.json') loaded_model_error = classification_error(self.y, trained_model.predict(self.X)) # check the errors self.assertTrue(np.abs(errors[errors.keys()[0]]['train'] - 0.06) < 1e-12) self.assertTrue(np.abs(errors[errors.keys()[0]]['train'] - loaded_model_error) < 1e-12)
def test_kfold_cv(self): trainer = TrainModelCV( [LogisticRegression, classification_error, None, (), { 'lam': 0.5 }], X=self.X, y=self.y, folds=self.folds) errors = trainer.run() self.assertTrue( np.abs(errors[errors.keys()[0]]['train'] - 0.063340259665816398) < 1e-12) self.assertTrue( np.abs(errors[errors.keys()[0]]['test'] - 0.049633305762338022) < 1e-12)
def test_aggregate_error(self): # test an aggregate error function (that returns more than one value) trainer = TrainModelCV([ LogisticRegression, TestTrainModelCV.agg_err, None, (), { 'lam': 0.5 } ], X=self.X, y=self.y, Xtest=self.X[:50, :], ytest=self.y[:50]) errors = trainer.run() self.assertTrue( np.abs(errors[errors.keys()[0]]['train']['accuracy'] - 0.06) < 1e-8) self.assertTrue( np.abs(errors[errors.keys()[0]]['train']['auc'] - 0.99310661764705888) < 1e-8)
def test_map_train_model(self): trainer = TrainModelCV([ LogisticRegression, classification_error, '/tmp/logistic.json', (), { 'lam': 0.5 } ], X=self.X, y=self.y) errors = trainer.run() # load model trained_model = LogisticRegression.load_model('/tmp/logistic.json') loaded_model_error = classification_error( self.y, trained_model.predict(self.X)) # check the errors self.assertTrue( np.abs(errors[errors.keys()[0]]['train'] - 0.06) < 1e-12) self.assertTrue( np.abs(errors[errors.keys()[0]]['train'] - loaded_model_error) < 1e-12)