ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

xgboost CV与自定义折叠python

2019-07-01 20:46:56  阅读:553  来源: 互联网

标签:python cross-validation xgboost


我正在处理数据,每个患者都可以有不同数量的训练样例.当运行Xgboost CV时,我想确保同一患者的数据仅限于同一个折叠,因此我需要使用折叠,其中可能有不同数量的索引.

在使用xgb.cv函数中的’fold’参数传递包含索引的numpy数组列表时,我得到:

dtrain = dall.slice(np.concatenate([idset [i] for i in range(nfold)if k!= i]))
ValueError:无法连接零维数组

我已经在R中实现了相同的过程,没有任何问题,我将自定义折叠作为列表传递,其中每个元素都是测试折叠索引的向量.

你能否告诉我们将自定义索引传递给Python XGBoost CV函数的正确方法.谢谢!

解决方法:

这已经很老了,但是当我遇到类似的问题时,我正在为谷歌搜索找到答案.

我想将TimeSeriesSplit与xgboost cv一起使用但不能直接执行,因为folds参数需要KFold或StratifiedKFold,但是,您可以将自己的索引列表作为元组列表给出,如下所示

train1 =  [0, 1, 2, 3, 4] 
test1  =  [4, 5, 6, 7, 8]

train2 =  [9 ,10 ,11 ,12 ,13]
test2 =   [14, 15, 16, 17, 18]

train3=  [19, 20, 21, 22, 23, 24]
test3 =  [25, 26, 27, 28, 29, 30]

tsFolds = [(train1, test1), (train2, test2), (train3, test3)]

xgbCV = xgb.cv(
    params = parameters, 
    dtrain = trainDMat, 
    num_boost_round = num_boost_round,
    nfold = len(tsFolds),
    folds = tsFolds,
    metrics = {'rmse'},
    early_stopping_rounds = early_stopping_rounds,
    verbose_eval = True,
    seed = seed     
)

标签:python,cross-validation,xgboost
来源: https://codeday.me/bug/20190701/1350667.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有