def test_regression_best_ntree_limit(): base_score = 0.6 estimator = xgboost.XGBRegressor(n_estimators=3, random_state=1, max_depth=1, base_score=base_score) utils.get_regression_model_trainer()(estimator) estimator.get_booster().best_ntree_limit = 2 assembler = assemblers.XGBoostModelAssemblerSelector(estimator) actual = assembler.assemble() expected = ast.BinNumExpr( ast.NumVal(base_score), ast.BinNumExpr( ast.IfExpr( ast.CompExpr(ast.FeatureRef(12), ast.NumVal(9.72500038), ast.CompOpType.GTE), ast.NumVal(4.995625019073486), ast.NumVal(8.715502738952637)), ast.IfExpr( ast.CompExpr(ast.FeatureRef(5), ast.NumVal(6.94099998), ast.CompOpType.GTE), ast.NumVal(8.309040069580078), ast.NumVal(3.930694580078125)), ast.BinNumOpType.ADD), ast.BinNumOpType.ADD) assert utils.cmp_exprs(actual, expected)
def test_regression(): base_score = 0.6 estimator = xgboost.XGBRegressor(n_estimators=2, random_state=1, max_depth=1, base_score=base_score) utils.get_regression_model_trainer()(estimator) assembler = assemblers.XGBoostModelAssemblerSelector(estimator) actual = assembler.assemble() expected = ast.SubroutineExpr( ast.BinNumExpr( ast.BinNumExpr( ast.NumVal(base_score), ast.SubroutineExpr( ast.IfExpr( ast.CompExpr(ast.FeatureRef(12), ast.NumVal(9.72500038), ast.CompOpType.GTE), ast.NumVal(1.6614188), ast.NumVal(2.91697121))), ast.BinNumOpType.ADD), ast.SubroutineExpr( ast.IfExpr( ast.CompExpr(ast.FeatureRef(5), ast.NumVal(6.94099998), ast.CompOpType.GTE), ast.NumVal(3.33810854), ast.NumVal(1.71813202))), ast.BinNumOpType.ADD)) assert utils.cmp_exprs(actual, expected)
def test_regression_random_forest(): base_score = 0.6 estimator = xgboost.XGBRFRegressor(n_estimators=2, random_state=1, max_depth=1, base_score=base_score) utils.get_regression_model_trainer()(estimator) assembler = assemblers.XGBoostModelAssemblerSelector(estimator) actual = assembler.assemble() expected = ast.SubroutineExpr( ast.BinNumExpr( ast.BinNumExpr( ast.NumVal(0.6), ast.SubroutineExpr( ast.IfExpr( ast.CompExpr(ast.FeatureRef(5), ast.NumVal(6.8375001), ast.CompOpType.GTE), ast.NumVal(17.3671646), ast.NumVal(9.48354053))), ast.BinNumOpType.ADD), ast.SubroutineExpr( ast.IfExpr( ast.CompExpr(ast.FeatureRef(12), ast.NumVal(9.72500038), ast.CompOpType.GTE), ast.NumVal(8.31587982), ast.NumVal(14.7766275))), ast.BinNumOpType.ADD)) assert utils.cmp_exprs(actual, expected)
def test_regression_saved_without_feature_names(): base_score = 0.6 estimator = xgboost.XGBRegressor(n_estimators=2, random_state=1, max_depth=1, base_score=base_score) utils.get_regression_model_trainer()(estimator) with utils.tmp_dir() as tmp_dirpath: filename = os.path.join(tmp_dirpath, "tmp.file") estimator.save_model(filename) estimator = xgboost.XGBRegressor(base_score=base_score) estimator.load_model(filename) assembler = assemblers.XGBoostModelAssemblerSelector(estimator) actual = assembler.assemble() expected = ast.SubroutineExpr( ast.BinNumExpr( ast.BinNumExpr( ast.NumVal(base_score), ast.SubroutineExpr( ast.IfExpr( ast.CompExpr(ast.FeatureRef(12), ast.NumVal(9.72500038), ast.CompOpType.GTE), ast.NumVal(1.6614188), ast.NumVal(2.91697121))), ast.BinNumOpType.ADD), ast.SubroutineExpr( ast.IfExpr( ast.CompExpr(ast.FeatureRef(5), ast.NumVal(6.94099998), ast.CompOpType.GTE), ast.NumVal(3.33810854), ast.NumVal(1.71813202))), ast.BinNumOpType.ADD)) assert utils.cmp_exprs(actual, expected)
def test_regression_random_forest(): base_score = 0.6 estimator = xgboost.XGBRFRegressor(n_estimators=2, random_state=1, max_depth=1, base_score=base_score) utils.get_regression_model_trainer()(estimator) assembler = assemblers.XGBoostModelAssemblerSelector(estimator) actual = assembler.assemble() expected = ast.BinNumExpr( ast.NumVal(base_score), ast.BinNumExpr( ast.IfExpr( ast.CompExpr(ast.FeatureRef(5), ast.NumVal(6.94099998), ast.CompOpType.GTE), ast.NumVal(18.38124656677246), ast.NumVal(9.772658348083496)), ast.IfExpr( ast.CompExpr(ast.FeatureRef(12), ast.NumVal(9.539999961853027), ast.CompOpType.GTE), ast.NumVal(8.342499732971191), ast.NumVal(15.027499198913574)), ast.BinNumOpType.ADD), ast.BinNumOpType.ADD) assert utils.cmp_exprs(actual, expected)
def test_multi_class(): estimator = xgboost.XGBClassifier(n_estimators=1, random_state=1, max_depth=1) estimator.fit(np.array([[1], [2], [3]]), np.array([1, 2, 3])) assembler = assemblers.XGBoostModelAssemblerSelector(estimator) actual = assembler.assemble() exponent = ast.ExpExpr(ast.SubroutineExpr( ast.BinNumExpr(ast.NumVal(0.5), ast.SubroutineExpr(ast.NumVal(0.0)), ast.BinNumOpType.ADD)), to_reuse=True) exponent_sum = ast.BinNumExpr(ast.BinNumExpr(exponent, exponent, ast.BinNumOpType.ADD), exponent, ast.BinNumOpType.ADD, to_reuse=True) softmax = ast.BinNumExpr(exponent, exponent_sum, ast.BinNumOpType.DIV) expected = ast.VectorVal([softmax] * 3) assert utils.cmp_exprs(actual, expected)
def test_regression_saved_without_feature_names(): base_score = 0.6 estimator = xgboost.XGBRegressor(n_estimators=2, random_state=1, max_depth=1, base_score=base_score) utils.get_regression_model_trainer()(estimator) with utils.tmp_dir() as tmp_dirpath: filename = os.path.join(tmp_dirpath, "tmp.file") estimator.save_model(filename) estimator = xgboost.XGBRegressor(base_score=base_score) estimator.load_model(filename) assembler = assemblers.XGBoostModelAssemblerSelector(estimator) actual = assembler.assemble() expected = ast.BinNumExpr( ast.NumVal(base_score), ast.BinNumExpr( ast.IfExpr( ast.CompExpr(ast.FeatureRef(12), ast.NumVal(9.72500038), ast.CompOpType.GTE), ast.NumVal(4.995625019073486), ast.NumVal(8.715502738952637)), ast.IfExpr( ast.CompExpr(ast.FeatureRef(5), ast.NumVal(6.94099998), ast.CompOpType.GTE), ast.NumVal(8.309040069580078), ast.NumVal(3.930694580078125)), ast.BinNumOpType.ADD), ast.BinNumOpType.ADD) assert utils.cmp_exprs(actual, expected)
def test_regression(): base_score = 0.6 estimator = xgboost.XGBRegressor(n_estimators=2, random_state=1, max_depth=1, base_score=base_score) utils.get_regression_model_trainer()(estimator) assembler = assemblers.XGBoostModelAssemblerSelector(estimator) actual = assembler.assemble() expected = ast.BinNumExpr( ast.NumVal(base_score), ast.BinNumExpr( ast.IfExpr( ast.CompExpr( ast.FeatureRef(12), ast.NumVal(9.725), ast.CompOpType.GTE), ast.NumVal(4.98425627), ast.NumVal(8.75091362)), ast.IfExpr( ast.CompExpr( ast.FeatureRef(5), ast.NumVal(6.941), ast.CompOpType.GTE), ast.NumVal(8.34557438), ast.NumVal(3.9141891)), ast.BinNumOpType.ADD), ast.BinNumOpType.ADD) assert utils.cmp_exprs(actual, expected)
def test_regression_random_forest(): base_score = 0.6 estimator = xgboost.XGBRFRegressor(n_estimators=2, random_state=1, max_depth=1, base_score=base_score) utils.get_regression_model_trainer()(estimator) assembler = assemblers.XGBoostModelAssemblerSelector(estimator) actual = assembler.assemble() expected = ast.BinNumExpr( ast.NumVal(base_score), ast.BinNumExpr( ast.IfExpr( ast.CompExpr( ast.FeatureRef(5), ast.NumVal(6.94099998), ast.CompOpType.GTE), ast.NumVal(18.1008453), ast.NumVal(9.60167599)), ast.IfExpr( ast.CompExpr( ast.FeatureRef(5), ast.NumVal(6.79699993), ast.CompOpType.GTE), ast.NumVal(17.780262), ast.NumVal(9.51712894)), ast.BinNumOpType.ADD), ast.BinNumOpType.ADD) assert utils.cmp_exprs(actual, expected)
def test_multi_class_best_ntree_limit(): base_score = 0.5 estimator = xgboost.XGBClassifier(n_estimators=100, random_state=1, max_depth=1, base_score=base_score) estimator.best_ntree_limit = 1 utils.get_classification_model_trainer()(estimator) assembler = assemblers.XGBoostModelAssemblerSelector(estimator) actual = assembler.assemble() estimator_exp_class1 = ast.ExpExpr(ast.SubroutineExpr( ast.BinNumExpr( ast.NumVal(0.5), ast.SubroutineExpr( ast.IfExpr( ast.CompExpr(ast.FeatureRef(2), ast.NumVal(2.45000005), ast.CompOpType.GTE), ast.NumVal(-0.0733167157), ast.NumVal(0.143414631))), ast.BinNumOpType.ADD)), to_reuse=True) estimator_exp_class2 = ast.ExpExpr(ast.SubroutineExpr( ast.BinNumExpr( ast.NumVal(0.5), ast.SubroutineExpr( ast.IfExpr( ast.CompExpr(ast.FeatureRef(2), ast.NumVal(2.45000005), ast.CompOpType.GTE), ast.NumVal(0.0344139598), ast.NumVal(-0.0717073306))), ast.BinNumOpType.ADD)), to_reuse=True) estimator_exp_class3 = ast.ExpExpr(ast.SubroutineExpr( ast.BinNumExpr( ast.NumVal(0.5), ast.SubroutineExpr( ast.IfExpr( ast.CompExpr(ast.FeatureRef(3), ast.NumVal(1.6500001), ast.CompOpType.GTE), ast.NumVal(0.13432835), ast.NumVal(-0.0644444525))), ast.BinNumOpType.ADD)), to_reuse=True) exp_sum = ast.BinNumExpr(ast.BinNumExpr(estimator_exp_class1, estimator_exp_class2, ast.BinNumOpType.ADD), estimator_exp_class3, ast.BinNumOpType.ADD, to_reuse=True) expected = ast.VectorVal([ ast.BinNumExpr(estimator_exp_class1, exp_sum, ast.BinNumOpType.DIV), ast.BinNumExpr(estimator_exp_class2, exp_sum, ast.BinNumOpType.DIV), ast.BinNumExpr(estimator_exp_class3, exp_sum, ast.BinNumOpType.DIV) ]) assert utils.cmp_exprs(actual, expected)
def test_multi_class_best_ntree_limit(): base_score = 0.5 estimator = xgboost.XGBClassifier(n_estimators=100, random_state=1, max_depth=1, base_score=base_score) estimator.best_ntree_limit = 1 utils.get_classification_model_trainer()(estimator) assembler = assemblers.XGBoostModelAssemblerSelector(estimator) actual = assembler.assemble() estimator_exp_class1 = ast.ExpExpr(ast.BinNumExpr( ast.NumVal(0.5), ast.IfExpr( ast.CompExpr(ast.FeatureRef(2), ast.NumVal(2.45000005), ast.CompOpType.GTE), ast.NumVal(-0.219950154), ast.NumVal(0.430243909)), ast.BinNumOpType.ADD), to_reuse=True) estimator_exp_class2 = ast.ExpExpr(ast.BinNumExpr( ast.NumVal(0.5), ast.IfExpr( ast.CompExpr(ast.FeatureRef(2), ast.NumVal(2.45000005), ast.CompOpType.GTE), ast.NumVal(0.103241883), ast.NumVal(-0.215121984)), ast.BinNumOpType.ADD), to_reuse=True) estimator_exp_class3 = ast.ExpExpr(ast.BinNumExpr( ast.NumVal(0.5), ast.IfExpr( ast.CompExpr(ast.FeatureRef(3), ast.NumVal(1.6500001), ast.CompOpType.GTE), ast.NumVal(0.402985066), ast.NumVal(-0.193333372)), ast.BinNumOpType.ADD), to_reuse=True) exp_sum = ast.BinNumExpr(ast.BinNumExpr(estimator_exp_class1, estimator_exp_class2, ast.BinNumOpType.ADD), estimator_exp_class3, ast.BinNumOpType.ADD, to_reuse=True) expected = ast.VectorVal([ ast.BinNumExpr(estimator_exp_class1, exp_sum, ast.BinNumOpType.DIV), ast.BinNumExpr(estimator_exp_class2, exp_sum, ast.BinNumOpType.DIV), ast.BinNumExpr(estimator_exp_class3, exp_sum, ast.BinNumOpType.DIV) ]) assert utils.cmp_exprs(actual, expected)
def test_leaves_cutoff_threshold(): estimator = xgboost.XGBClassifier(n_estimators=2, random_state=1, max_depth=1) utils.train_model_classification_binary(estimator) assembler = assemblers.XGBoostModelAssemblerSelector( estimator, leaves_cutoff_threshold=1) actual = assembler.assemble() sigmoid = ast.BinNumExpr( ast.NumVal(1), ast.BinNumExpr( ast.NumVal(1), ast.ExpExpr( ast.BinNumExpr( ast.NumVal(0), ast.SubroutineExpr( ast.BinNumExpr( ast.BinNumExpr( ast.NumVal(-0.0), ast.SubroutineExpr( ast.SubroutineExpr( ast.IfExpr( ast.CompExpr( ast.FeatureRef(20), ast.NumVal(16.7950001), ast.CompOpType.GTE), ast.NumVal(-0.173057005), ast.NumVal(0.163440868)))), ast.BinNumOpType.ADD), ast.SubroutineExpr( ast.SubroutineExpr( ast.IfExpr( ast.CompExpr(ast.FeatureRef(27), ast.NumVal(0.142349988), ast.CompOpType.GTE), ast.NumVal(-0.161026895), ast.NumVal(0.149405137)))), ast.BinNumOpType.ADD)), ast.BinNumOpType.SUB)), ast.BinNumOpType.ADD), ast.BinNumOpType.DIV, to_reuse=True) expected = ast.VectorVal([ ast.BinNumExpr(ast.NumVal(1), sigmoid, ast.BinNumOpType.SUB), sigmoid ]) assert utils.cmp_exprs(actual, expected)
def test_linear_model(): # Default updater ("shotgun") is nondeterministic estimator = xgboost.XGBRegressor(n_estimators=2, random_state=1, updater="coord_descent", feature_selector="shuffle", booster="gblinear") utils.get_regression_model_trainer()(estimator) assembler = assemblers.XGBoostModelAssemblerSelector(estimator) actual = assembler.assemble() feature_weight_mul = [ ast.BinNumExpr(ast.FeatureRef(0), ast.NumVal(-0.151436), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(1), ast.NumVal(0.084474), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(2), ast.NumVal(-0.10035), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(3), ast.NumVal(4.71537), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(4), ast.NumVal(1.39071), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(5), ast.NumVal(0.330592), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(6), ast.NumVal(0.0610453), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(7), ast.NumVal(0.476255), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(8), ast.NumVal(-0.0677851), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(9), ast.NumVal(-0.000543615), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(10), ast.NumVal(0.0717916), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(11), ast.NumVal(0.010832), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(12), ast.NumVal(-0.139375), ast.BinNumOpType.MUL), ] expected = ast.BinNumExpr( ast.NumVal(0.5), assemblers.utils.apply_op_to_expressions(ast.BinNumOpType.ADD, ast.NumVal(11.1287), *feature_weight_mul), ast.BinNumOpType.ADD) assert utils.cmp_exprs(actual, expected)
def test_linear_model(): # Default updater ("shotgun") is nondeterministic estimator = xgboost.XGBRegressor(n_estimators=2, random_state=1, updater="coord_descent", feature_selector="shuffle", booster="gblinear") utils.get_regression_model_trainer()(estimator) assembler = assemblers.XGBoostModelAssemblerSelector(estimator) actual = assembler.assemble() feature_weight_mul = [ ast.BinNumExpr(ast.FeatureRef(0), ast.NumVal(-0.154567), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(1), ast.NumVal(0.0815865), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(2), ast.NumVal(-0.0979713), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(3), ast.NumVal(4.80472), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(4), ast.NumVal(1.35478), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(5), ast.NumVal(0.327222), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(6), ast.NumVal(0.0610654), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(7), ast.NumVal(0.46989), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(8), ast.NumVal(-0.0674318), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(9), ast.NumVal(-0.000506212), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(10), ast.NumVal(0.0732867), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(11), ast.NumVal(0.0108842), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(12), ast.NumVal(-0.140096), ast.BinNumOpType.MUL), ] expected = ast.BinNumExpr( ast.NumVal(0.5), assemblers.utils.apply_op_to_expressions(ast.BinNumOpType.ADD, ast.NumVal(11.138), *feature_weight_mul), ast.BinNumOpType.ADD) assert utils.cmp_exprs(actual, expected)
def test_multi_class(): estimator = xgboost.XGBClassifier(n_estimators=1, random_state=1, max_depth=1) estimator.fit(np.array([[1], [2], [3]]), np.array([1, 2, 3])) assembler = assemblers.XGBoostModelAssemblerSelector(estimator) actual = assembler.assemble() num_expr = ast.BinNumExpr(ast.NumVal(0.5), ast.NumVal(-7.663454759665456e-09), ast.BinNumOpType.ADD) expected = ast.SoftmaxExpr([num_expr] * 3) assert utils.cmp_exprs(actual, expected)
def test_linear_model(): estimator = xgboost.XGBRegressor(n_estimators=2, random_state=1, feature_selector="shuffle", booster="gblinear") utils.get_regression_model_trainer()(estimator) assembler = assemblers.XGBoostModelAssemblerSelector(estimator) actual = assembler.assemble() feature_weight_mul = [ ast.BinNumExpr(ast.FeatureRef(0), ast.NumVal(-0.00999326), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(1), ast.NumVal(0.0520094), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(2), ast.NumVal(0.10447), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(3), ast.NumVal(0.17387), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(4), ast.NumVal(0.691745), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(5), ast.NumVal(0.296357), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(6), ast.NumVal(0.0288206), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(7), ast.NumVal(0.417822), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(8), ast.NumVal(0.0551116), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(9), ast.NumVal(0.00242449), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(10), ast.NumVal(0.109585), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(11), ast.NumVal(0.00744202), ast.BinNumOpType.MUL), ast.BinNumExpr(ast.FeatureRef(12), ast.NumVal(0.0731089), ast.BinNumOpType.MUL), ] expected = ast.SubroutineExpr( ast.BinNumExpr( ast.NumVal(0.5), assemblers.utils.apply_op_to_expressions(ast.BinNumOpType.ADD, ast.NumVal(3.13109), *feature_weight_mul), ast.BinNumOpType.ADD)) assert utils.cmp_exprs(actual, expected)
def test_binary_classification(): estimator = xgboost.XGBClassifier(n_estimators=2, random_state=1, max_depth=1) utils.get_binary_classification_model_trainer()(estimator) assembler = assemblers.XGBoostModelAssemblerSelector(estimator) actual = assembler.assemble() sigmoid = ast.BinNumExpr( ast.NumVal(1), ast.BinNumExpr( ast.NumVal(1), ast.ExpExpr( ast.BinNumExpr( ast.NumVal(0), ast.BinNumExpr( ast.IfExpr( ast.CompExpr( ast.FeatureRef(20), ast.NumVal(16.7950001), ast.CompOpType.GTE), ast.NumVal(-0.519171), ast.NumVal(0.49032259)), ast.IfExpr( ast.CompExpr( ast.FeatureRef(27), ast.NumVal(0.142349988), ast.CompOpType.GTE), ast.NumVal(-0.443304211), ast.NumVal(0.391988248)), ast.BinNumOpType.ADD), ast.BinNumOpType.SUB)), ast.BinNumOpType.ADD), ast.BinNumOpType.DIV, to_reuse=True) expected = ast.VectorVal([ ast.BinNumExpr(ast.NumVal(1), sigmoid, ast.BinNumOpType.SUB), sigmoid]) assert utils.cmp_exprs(actual, expected)
def test_binary_classification(): estimator = xgboost.XGBClassifier(n_estimators=2, random_state=1, max_depth=1) utils.get_binary_classification_model_trainer()(estimator) assembler = assemblers.XGBoostModelAssemblerSelector(estimator) actual = assembler.assemble() sigmoid = ast.BinNumExpr( ast.NumVal(1), ast.BinNumExpr( ast.NumVal(1), ast.ExpExpr( ast.BinNumExpr( ast.NumVal(0), ast.BinNumExpr( ast.IfExpr( ast.CompExpr(ast.FeatureRef(20), ast.NumVal(16.795), ast.CompOpType.GTE), ast.NumVal(-0.5178947448730469), ast.NumVal(0.4880000054836273)), ast.IfExpr( ast.CompExpr(ast.FeatureRef(27), ast.NumVal(0.142349988), ast.CompOpType.GTE), ast.NumVal(-0.4447747468948364), ast.NumVal(0.39517202973365784)), ast.BinNumOpType.ADD), ast.BinNumOpType.SUB)), ast.BinNumOpType.ADD), ast.BinNumOpType.DIV, to_reuse=True) expected = ast.VectorVal([ ast.BinNumExpr(ast.NumVal(1), sigmoid, ast.BinNumOpType.SUB), sigmoid ]) assert utils.cmp_exprs(actual, expected)
def test_multi_class_best_ntree_limit(): base_score = 0.5 estimator = xgboost.XGBClassifier(n_estimators=100, random_state=1, max_depth=1, base_score=base_score) utils.get_classification_model_trainer()(estimator) estimator.get_booster().best_ntree_limit = 1 assembler = assemblers.XGBoostModelAssemblerSelector(estimator) actual = assembler.assemble() estimator_class1 = ast.BinNumExpr( ast.NumVal(0.5), ast.IfExpr( ast.CompExpr(ast.FeatureRef(2), ast.NumVal(2.450000047683716), ast.CompOpType.GTE), ast.NumVal(-0.21995015442371368), ast.NumVal(0.43024390935897827)), ast.BinNumOpType.ADD) estimator_class2 = ast.BinNumExpr( ast.NumVal(0.5), ast.IfExpr( ast.CompExpr(ast.FeatureRef(2), ast.NumVal(2.450000047683716), ast.CompOpType.GTE), ast.NumVal(0.10324188321828842), ast.NumVal(-0.21512198448181152)), ast.BinNumOpType.ADD) estimator_class3 = ast.BinNumExpr( ast.NumVal(0.5), ast.IfExpr( ast.CompExpr(ast.FeatureRef(3), ast.NumVal(1.6500000953674316), ast.CompOpType.GTE), ast.NumVal(0.4029850661754608), ast.NumVal(-0.19333337247371674)), ast.BinNumOpType.ADD) expected = ast.SoftmaxExpr( [estimator_class1, estimator_class2, estimator_class3]) assert utils.cmp_exprs(actual, expected)