首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在拟合CatBoostRegressor时对评估集中的观察值进行加权吗?

我可以在拟合CatBoostRegressor时对评估集中的观察值进行加权吗?
EN

Stack Overflow用户
提问于 2019-01-15 19:33:32
回答 1查看 267关注 0票数 0

我正在尝试使用train集和eval集来拟合CatBoostRegressor。在train_set中有一个参数sample_weight用于加权观察结果,但我没有看到与eval集等效的参数。

下面是一个示例:

代码语言:javascript
复制
from catboost import CatBoostRegressor

# Initialize data
cat_features = [0,1,2]

x_train = [["a","b",1,4,5,6],["a","b",4,5,6,7],["c","d",30,40,50,60]]
x_eval = [["a","b",2,4,6,8],["a","d",1,4,50,60]]

y_train = [10,20,30]
y_eval = [10,20]

w_train = [0.1, 0.2, 0.7]
w_eval = [0.1, 0.2]

# Initialize CatBoostRegressor
model = CatBoostRegressor(iterations=2, learning_rate=1, depth=2)

# Fit model
model.fit(X=x_train,
          y=y_train,
          sample_weight=w_train,
          eval_set=(x_eval, y_eval),
          cat_features=cat_features)

在示例中,将w_eval放在哪里才是正确的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-16 00:54:23

是的,为此,您需要使用Pool类。示例:

代码语言:javascript
复制
from catboost import CatBoostClassifier, Pool

train_data = Pool(
    data=[[1, 4, 5, 6], 
          [4, 5, 6, 7], 
          [30, 40, 50, 60]],
    label=[1, 1, -1],
    weight=[0.1, 0.2, 0.3]
)

eval_data = Pool(
    data=[[1, 4, 5, 6], 
          [4, 5, 6, 7], 
          [30, 40, 50, 60]],
    label=[1, 0, -1],
    weight=[0.7, 0.1, 0.3]
)

model = CatBoostClassifier(iterations = 10)

model.fit(X=train_data, eval_set=eval_data)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54198009

复制
相关文章

相似问题

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