Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
def test_multi_class_best_ntree_limit():
    base_score = 0.5
    estimator = xgb.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 = 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)
Esempio n. 4
0
def test_lightning_multi_class():
    estimator = AdaGradClassifier(random_state=1)
    utils.get_classification_model_trainer()(estimator)

    assembler = assemblers.SklearnLinearModelAssembler(estimator)
    actual = assembler.assemble()

    expected = ast.VectorVal([
        ast.BinNumExpr(
            ast.BinNumExpr(
                ast.BinNumExpr(
                    ast.BinNumExpr(
                        ast.NumVal(0.0),
                        ast.BinNumExpr(
                            ast.FeatureRef(0),
                            ast.NumVal(0.09686334892116512),
                            ast.BinNumOpType.MUL),
                        ast.BinNumOpType.ADD),
                    ast.BinNumExpr(
                        ast.FeatureRef(1),
                        ast.NumVal(0.32572202133211947),
                        ast.BinNumOpType.MUL),
                    ast.BinNumOpType.ADD),
                ast.BinNumExpr(
                    ast.FeatureRef(2),
                    ast.NumVal(-0.48444233646554424),
                    ast.BinNumOpType.MUL),
                ast.BinNumOpType.ADD),
            ast.BinNumExpr(
                ast.FeatureRef(3),
                ast.NumVal(-0.219719145605816),
                ast.BinNumOpType.MUL),
            ast.BinNumOpType.ADD),
        ast.BinNumExpr(
            ast.BinNumExpr(
                ast.BinNumExpr(
                    ast.BinNumExpr(
                        ast.NumVal(0.0),
                        ast.BinNumExpr(
                            ast.FeatureRef(0),
                            ast.NumVal(-0.1089136473832088),
                            ast.BinNumOpType.MUL),
                        ast.BinNumOpType.ADD),
                    ast.BinNumExpr(
                        ast.FeatureRef(1),
                        ast.NumVal(-0.16956003333433572),
                        ast.BinNumOpType.MUL),
                    ast.BinNumOpType.ADD),
                ast.BinNumExpr(
                    ast.FeatureRef(2),
                    ast.NumVal(0.0365531256007199),
                    ast.BinNumOpType.MUL),
                ast.BinNumOpType.ADD),
            ast.BinNumExpr(
                ast.FeatureRef(3),
                ast.NumVal(-0.01016100116780896),
                ast.BinNumOpType.MUL),
            ast.BinNumOpType.ADD),
        ast.BinNumExpr(
            ast.BinNumExpr(
                ast.BinNumExpr(
                    ast.BinNumExpr(
                        ast.NumVal(0.0),
                        ast.BinNumExpr(
                            ast.FeatureRef(0),
                            ast.NumVal(-0.16690339219780817),
                            ast.BinNumOpType.MUL),
                        ast.BinNumOpType.ADD),
                    ast.BinNumExpr(
                        ast.FeatureRef(1),
                        ast.NumVal(-0.19466284646233858),
                        ast.BinNumOpType.MUL),
                    ast.BinNumOpType.ADD),
                ast.BinNumExpr(
                    ast.FeatureRef(2),
                    ast.NumVal(0.2953585236360389),
                    ast.BinNumOpType.MUL),
                ast.BinNumOpType.ADD),
            ast.BinNumExpr(
                ast.FeatureRef(3),
                ast.NumVal(0.21288203082531384),
                ast.BinNumOpType.MUL),
            ast.BinNumOpType.ADD)])

    assert utils.cmp_exprs(actual, expected)
Esempio n. 5
0
    ("ruby", m2c.export_to_ruby, "rb"),
    ("f_sharp", m2c.export_to_f_sharp, "fs"),
]

EXAMPLE_MODELS = [
    (
        "regression",
        "linear",
        linear_model.LinearRegression(),
        utils.get_regression_model_trainer(),
    ),
    (
        "classification",
        "linear",
        linear_model.LogisticRegression(random_state=RANDOM_SEED),
        utils.get_classification_model_trainer(),
    ),
    (
        "regression",
        "decision_tree",
        tree.DecisionTreeRegressor(**TREE_PARAMS),
        utils.get_regression_model_trainer(),
    ),
    (
        "classification",
        "decision_tree",
        tree.DecisionTreeClassifier(**TREE_PARAMS),
        utils.get_classification_model_trainer(),
    ),
    (
        "regression",
Esempio n. 6
0
def classification(model, test_fraction=0.02):
    return (
        model,
        utils.get_classification_model_trainer(test_fraction),
        CLASSIFICATION,
    )
Esempio n. 7
0
def test_lightning_multi_class():
    estimator = AdaGradClassifier(random_state=1)
    utils.get_classification_model_trainer()(estimator)

    assembler = assemblers.SklearnLinearModelAssembler(estimator)
    actual = assembler.assemble()

    expected = ast.VectorVal([
        ast.BinNumExpr(
            ast.BinNumExpr(
                ast.BinNumExpr(
                    ast.BinNumExpr(
                        ast.NumVal(0.0),
                        ast.BinNumExpr(ast.FeatureRef(0),
                                       ast.NumVal(0.0895848274),
                                       ast.BinNumOpType.MUL),
                        ast.BinNumOpType.ADD),
                    ast.BinNumExpr(ast.FeatureRef(1), ast.NumVal(0.3258329434),
                                   ast.BinNumOpType.MUL),
                    ast.BinNumOpType.ADD),
                ast.BinNumExpr(ast.FeatureRef(2), ast.NumVal(-0.4900856238),
                               ast.BinNumOpType.MUL), ast.BinNumOpType.ADD),
            ast.BinNumExpr(ast.FeatureRef(3), ast.NumVal(-0.2214482506),
                           ast.BinNumOpType.MUL), ast.BinNumOpType.ADD),
        ast.BinNumExpr(
            ast.BinNumExpr(
                ast.BinNumExpr(
                    ast.BinNumExpr(
                        ast.NumVal(0.0),
                        ast.BinNumExpr(ast.FeatureRef(0),
                                       ast.NumVal(-0.1074247041),
                                       ast.BinNumOpType.MUL),
                        ast.BinNumOpType.ADD),
                    ast.BinNumExpr(ast.FeatureRef(1),
                                   ast.NumVal(-0.1693225196),
                                   ast.BinNumOpType.MUL),
                    ast.BinNumOpType.ADD),
                ast.BinNumExpr(ast.FeatureRef(2), ast.NumVal(0.0357417324),
                               ast.BinNumOpType.MUL), ast.BinNumOpType.ADD),
            ast.BinNumExpr(ast.FeatureRef(3), ast.NumVal(-0.0161614171),
                           ast.BinNumOpType.MUL), ast.BinNumOpType.ADD),
        ast.BinNumExpr(
            ast.BinNumExpr(
                ast.BinNumExpr(
                    ast.BinNumExpr(
                        ast.NumVal(0.0),
                        ast.BinNumExpr(ast.FeatureRef(0),
                                       ast.NumVal(-0.1825063678),
                                       ast.BinNumOpType.MUL),
                        ast.BinNumOpType.ADD),
                    ast.BinNumExpr(ast.FeatureRef(1),
                                   ast.NumVal(-0.2185655665),
                                   ast.BinNumOpType.MUL),
                    ast.BinNumOpType.ADD),
                ast.BinNumExpr(ast.FeatureRef(2), ast.NumVal(0.3053017646),
                               ast.BinNumOpType.MUL), ast.BinNumOpType.ADD),
            ast.BinNumExpr(ast.FeatureRef(3), ast.NumVal(0.2175198459),
                           ast.BinNumOpType.MUL), ast.BinNumOpType.ADD)
    ])

    assert utils.cmp_exprs(actual, expected)
Esempio n. 8
0
def test_lightning_multi_class():
    estimator = AdaGradClassifier(random_state=1)
    utils.get_classification_model_trainer()(estimator)

    assembler = assemblers.SklearnLinearModelAssembler(estimator)
    actual = assembler.assemble()

    expected = ast.VectorVal([
        ast.BinNumExpr(
            ast.BinNumExpr(
                ast.BinNumExpr(
                    ast.BinNumExpr(
                        ast.NumVal(0.0),
                        ast.BinNumExpr(ast.FeatureRef(0),
                                       ast.NumVal(0.0935146297),
                                       ast.BinNumOpType.MUL),
                        ast.BinNumOpType.ADD),
                    ast.BinNumExpr(ast.FeatureRef(1), ast.NumVal(0.3213921354),
                                   ast.BinNumOpType.MUL),
                    ast.BinNumOpType.ADD),
                ast.BinNumExpr(ast.FeatureRef(2), ast.NumVal(-0.4855914264),
                               ast.BinNumOpType.MUL), ast.BinNumOpType.ADD),
            ast.BinNumExpr(ast.FeatureRef(3), ast.NumVal(-0.2214295302),
                           ast.BinNumOpType.MUL), ast.BinNumOpType.ADD),
        ast.BinNumExpr(
            ast.BinNumExpr(
                ast.BinNumExpr(
                    ast.BinNumExpr(
                        ast.NumVal(0.0),
                        ast.BinNumExpr(ast.FeatureRef(0),
                                       ast.NumVal(-0.1103262586),
                                       ast.BinNumOpType.MUL),
                        ast.BinNumOpType.ADD),
                    ast.BinNumExpr(ast.FeatureRef(1),
                                   ast.NumVal(-0.1662457692),
                                   ast.BinNumOpType.MUL),
                    ast.BinNumOpType.ADD),
                ast.BinNumExpr(ast.FeatureRef(2), ast.NumVal(0.0379823341),
                               ast.BinNumOpType.MUL), ast.BinNumOpType.ADD),
            ast.BinNumExpr(ast.FeatureRef(3), ast.NumVal(-0.0128634938),
                           ast.BinNumOpType.MUL), ast.BinNumOpType.ADD),
        ast.BinNumExpr(
            ast.BinNumExpr(
                ast.BinNumExpr(
                    ast.BinNumExpr(
                        ast.NumVal(0.0),
                        ast.BinNumExpr(ast.FeatureRef(0),
                                       ast.NumVal(-0.1685751402),
                                       ast.BinNumOpType.MUL),
                        ast.BinNumOpType.ADD),
                    ast.BinNumExpr(ast.FeatureRef(1),
                                   ast.NumVal(-0.2045901693),
                                   ast.BinNumOpType.MUL),
                    ast.BinNumOpType.ADD),
                ast.BinNumExpr(ast.FeatureRef(2), ast.NumVal(0.2932121798),
                               ast.BinNumOpType.MUL), ast.BinNumOpType.ADD),
            ast.BinNumExpr(ast.FeatureRef(3), ast.NumVal(0.2138148665),
                           ast.BinNumOpType.MUL), ast.BinNumOpType.ADD)
    ])

    assert utils.cmp_exprs(actual, expected)
Esempio n. 9
0
    ("ruby", m2c.export_to_ruby, "rb"),
    ("f_sharp", m2c.export_to_f_sharp, "fs"),
]

EXAMPLE_MODELS = [
    (
        "regression",
        "linear",
        linear_model.LinearRegression(),
        utils.get_regression_model_trainer(),
    ),
    (
        "classification",
        "linear",
        linear_model.LogisticRegression(random_state=RANDOM_SEED),
        utils.get_classification_model_trainer(),
    ),
    (
        "regression",
        "decision_tree",
        tree.DecisionTreeRegressor(**TREE_PARAMS),
        utils.get_regression_model_trainer(),
    ),
    (
        "classification",
        "decision_tree",
        tree.DecisionTreeClassifier(**TREE_PARAMS),
        utils.get_classification_model_trainer(),
    ),
    (
        "regression",
Esempio n. 10
0
def classification(model):
    return (
        model,
        utils.get_classification_model_trainer(),
        CLASSIFICATION,
    )