【问题标题】:skopt's BayesSearchCV with CatBoostskopt 的 BayesSearchCV 与 CatBoost
【发布时间】:2019-05-30 10:29:23
【问题描述】:

我正在尝试将 skopt 的 BayesSearchCV 方法与 Catboost 一起使用。但是,我对将 catboost 原生的分类特征的索引传递到bayesSearch 对象的 fit() 方法的位置感到困惑。

clf = catboost.CatBoostClassifier()
search_spaces = {'iterations': (10, 1000),
                 'depth': (1, 10),
                 'learning_rate': (0.001, 0.5),
                 'random_strength': (1e-9, 10)}
pt = BayesSearchCV(clf,
                    search_spaces,
                    n_iter=40)
pt.fit(x_train,y_train)

fit() 抛出错误无法将分类转换为浮点数,

我知道,错误是因为我没有传递分类变量的索引,但我无法在贝叶斯的 fit() 方法中传递它们。还尝试了 catboost 的 pool() 方法,该方法也不起作用。

【问题讨论】:

    标签: catboost


    【解决方案1】:

    我在使用 CalibratedClassifierCV 时遇到了类似的问题。所以,在这里发布解决方案。也许这对你有用。

    您可以尝试通过首先将分类特征编码为数字来解决此问题,以愚弄 BayesSearchCV,但在启动 CatBoostClassifier() 时仍传递分类特征索引,以便 CatBoost 可以适当地利用它们:

    # Import necessary libraries
    from sklearn.calibration import CalibratedClassifierCV
    from catboost import CatBoostClassifier
    
    # Initialize Calibrated Classifier with Catboost
    model_combined = CalibratedClassifierCV(
        CatBoostClassifier(cat_features=<cat_features_indexes>),
        method='isotonic',
        cv=5,
    )
    

    【讨论】:

      猜你喜欢
      • 2021-09-10
      • 2021-06-02
      • 1970-01-01
      • 2020-03-15
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 1970-01-01
      • 2018-04-10
      相关资源
      最近更新 更多