lightgbm 运行参数error

2017-05-31  本文已影响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()

上一篇下一篇

猜你喜欢

热点阅读