美文网首页
lightgbm 运行参数error

lightgbm 运行参数error

作者: 留十夜 | 来源:发表于2017-05-31 15:56 被阅读0次

    lightgbm 是继xgboost后又一boost大杀器,此处是github链接.

    xgboost 实质上只能接受数值型训练数据,因为其工作原理是对于每一个feature,首先对其所有取值预排序,然后遍历一遍找到最佳分割点。lightgbm采用分桶的思想加速了这一过程。

    而lightgbm也可以处理标称型(类别)数据。通过指定'categorical_feature' 这一参数告诉它哪些feature是标称型的。它不需要将数据展开成独热码(one-hot),其原理是对特征的所有取值,做一个one-vs-others,从而找出最佳分割的那一个特征取值。

    训练过程中出现了一个小error:

    if self.categorical_feature == categorical_feature:
    ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
    

    查看lightgbm 参数说明
    可以看到:

    categorical_feature : list of str or int, or 'auto'
        Categorical features,
        type int represents index,
        type str represents feature names (need to specify feature_name as well)
        If 'auto' and data is pandas DataFrame, use pandas categorical columns
    

    就是说,对于参数categorical_feature,当传入数据类型是pandas DataFrame时,可以指定auto;否则只能传入list,str,int 三者之一。
    而我传入的数据类型是 numpy array,因此报错。

    解决办法就是转成list, 即 arr.tolist()

    相关文章

      网友评论

          本文标题:lightgbm 运行参数error

          本文链接:https://www.haomeiwen.com/subject/hykjfxtx.html