def svr_space_2D():

    from sklearn.svm import SVR
    return hp.Obj(SVR)(
        C = hp.Float( 0.01, 1000, hp.log_scale ),
        gamma = hp.Float( 10**-5, 1000, hp.log_scale ),
    )
def forest_regressor_space_3D():

    return hp.Obj(Forest)(
        n_estimators = 100,
        max_features = hp.Float(0.0001,1),
        bootstrap = hp.Enum(True, False),
        algo = hp.Enum('RFR','eTreeR')
    ) 
def gbc_space_3D():

    return hp.Obj(GBC)(
        max_depth = hp.Int(1, 15 ),
        learning_rate = hp.Float( 0.01, 1, hp.log_scale ),
        max_features = hp.Float( 0.001, 1 ),
        n_estimators = 100,
    )
def gbr_space():
    from sklearn.ensemble import GradientBoostingRegressor
    
    return hp.Obj(GradientBoostingRegressor)(
        max_depth = hp.Int(1, 15 ),
        learning_rate = hp.Float( 0.01, 1, hp.log_scale ),
        n_estimators = 100,
    )
def forest_classifier_space_3D(n_estimators = 100):

    return hp.Obj(Forest)(
        n_estimators = n_estimators,
        max_features = hp.Float(0.0001,1),
        bootstrap = hp.Enum(True, False),
        algo = hp.Enum('RFC','eTreeC')
    )
def svc_space_1d():

    from sklearn.svm import SVC
    
    return hp.Obj(SVC)(
#         C = hp.Float( 0.01, 1000, hp.log_scale ),
        C = 1000,
        gamma = hp.Float( 10**-5, 1000, hp.log_scale ),
    )
def forest_nll_space_4D(n_estimators = 100):

    return hp.Obj(Forest)(
        n_estimators = n_estimators,
        base_prob = hp.Float(1e-8,1e-1, hp.log_scale),
        max_features = hp.Float(0.0001,1),
        bootstrap = hp.Enum(True, False),
        algo = hp.Enum('RFC','eTreeC'),
        return_proba = True,
    )