首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与CatBoostRegressor的交叉验证永不停止

与CatBoostRegressor的交叉验证永不停止
EN

Stack Overflow用户
提问于 2020-12-15 04:12:18
回答 1查看 1.9K关注 0票数 2

我使用这段代码对catboost.However进行交叉验证,它已经运行了10个小时,控制台仍然在输出,交叉验证显然超过5轮。

有什么问题吗?

代码语言:javascript
复制
import pandas as pd
from sklearn.model_selection import train_test_split
import catboost
# from sklearn.model_selection import KFold
from sklearn.feature_selection import RFECV

train_data = pd.read_csv('train.txt',sep='\t')
test_data = pd.read_csv('test.txt',sep='\t')
X = train_data.iloc[:,:-1]
y = train_data['target']
model = catboost.CatBoostRegressor(
                           loss_function="RMSE",
                           eval_metric="RMSE",
                           task_type="GPU",
                           learning_rate=0.01,
                           iterations=10000,
                           random_seed=42,
                           od_type="Iter",
                           depth=10,
                           early_stopping_rounds=50
                          )
rfecv = RFECV(estimator = model,cv = 5,scoring = 'neg_mean_squared_error')
rfecv.fit(X, y)
df = pd.DataFrame(rfecv.predict(test_data))
df.to_csv("my.txt", index=False, header=False)

然后我停止了程序,当我将迭代更改为100时,我发现控制台总共迭代了161次,stopped.In我的意见是,应该在5次交叉验证之后停止它,但实际上在5次之后它还没有停止。

为什么是这样?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-15 08:51:18

要解决这个问题,有几个简单的步骤:

  1. iterations减少到更有意义的1,000,甚至300,如果你还有时间问题的话,
  2. 会将cv减少到3,例如,如果数据在合理的时间内完成,用较小的数据子集进行
  3. 检查。然后用整个数据集进行估计--假设algo将“线性”缩放--如果您对时间感到满意的话。

注意,RFECV是一个贪婪的algo,一次修剪一个最弱的特性,这可能会导致一个问题,如果达到一个局部的最小值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65299885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档