【问题标题】:XGBoost Cross ValidationXGBoost 交叉验证
【发布时间】:2018-08-02 23:27:11
【问题描述】:

当我尝试使用代码运行交叉验证时:

cv_results = xgb.cv(params=params,dtrain=dmatrix_train, num_boost_round=10, nfold=1)

我收到以下错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-101-65647e385c18> in <module>()
----> 1 cv_results = xgb.cv(params=params,dtrain=dmatrix_train, num_boost_round=10, nfold=1)

Can anyone point to me what I am doing wrong?

C:\ProgramData\Anaconda35\lib\site-packages\xgboost-0.40-py3.6.egg\xgboost.py in cv(params, dtrain, num_boost_round, nfold, metrics, obj, feval, fpreproc, show_stdv, seed)
    798     """
    799     results = []
--> 800     cvfolds = mknfold(dtrain, nfold, params, seed, metrics, fpreproc)
    801     for i in range(num_boost_round):
    802         for f in cvfolds:

C:\ProgramData\Anaconda35\lib\site-packages\xgboost-0.40-py3.6.egg\xgboost.py in mknfold(dall, nfold, param, seed, evals, fpreproc)
    722     randidx = np.random.permutation(dall.num_row())
    723     kstep = len(randidx) / nfold
--> 724     idset = [randidx[(i * kstep): min(len(randidx), (i + 1) * kstep)] for i in range(nfold)]
    725     ret = []
    726     for k in range(nfold):

C:\ProgramData\Anaconda35\lib\site-packages\xgboost-0.40-py3.6.egg\xgboost.py in <listcomp>(.0)
    722     randidx = np.random.permutation(dall.num_row())
    723     kstep = len(randidx) / nfold
--> 724     idset = [randidx[(i * kstep): min(len(randidx), (i + 1) * kstep)] for i in range(nfold)]
    725     ret = []
    726     for k in range(nfold):

TypeError: slice indices must be integers or None or have an __index__ method

【问题讨论】:

    标签: python machine-learning xgboost


    【解决方案1】:

    您正在传递参数值n_fold=1 这没有意义。交叉验证就是将数据分成几个分区并验证模型在其中一个分区。所以 1 是一个无效值,试试n_fold=3 or higher。那么你的错误应该消失了。

    在此处阅读有关交叉验证的更多信息。 http://scikit-learn.org/stable/modules/cross_validation.html

    【讨论】:

    • 我想知道为什么错误消息没有指定n_fold必须> 1
    猜你喜欢
    • 2019-11-16
    • 2017-01-27
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    相关资源
    最近更新 更多