python - lgb.train ValueError : The truth value of an array with more than one element is ambiguous. 使用 a.any() 或 a.all()

标签 python pandas numpy lightgbm

我想按如下方式训练 lightgbm 模型:

train = pd.read_csv(path + "all_train.csv")

# last 8 days for online predictions
# left days for offline train&valid dataset
online_pred = get_windows(train, 541, 548+1)
offline_train = get_windows(train, 0, 541-7)
offline_valid = get_windows(train, 541-7, 541)

cate_feat = train.select_dtypes(include=[np.object]).columns

features = [c for c in train.columns if #(c not in cate_feat) & 
            (c not in ['pv', 'uv'])
           ]

train_x = offline_train[features]
train_y = offline_train['pv']

valid_x = offline_valid[features]
valid_y = offline_valid['pv']

for it in cate_feat:
    train_x.loc[:,it] = LabelEncoder().fit_transform(train_x[it].astype(str))
    valid_x.loc[:,it] = LabelEncoder().fit_transform(valid_x[it].astype(str))

print(train_x.head())
print(valid_x.head())

del offline_train, offline_valid
import gc
gc.collect()
from time import sleep
sleep(30)

for it in cate_feat:
    train_x = train_x.astype('category')

    valid_x = train_y.astype('category')



trn_data = lgb.Dataset(train_x.values, label=train_y.values)
val_data = lgb.Dataset(valid_x.values, label=valid_y.values)

del train_x, train_y, valid_x, valid_y, train
gc.collect()
sleep(30)
pv_predict = np.zeros((online_pred.shape[0], ))

clf = lgb.train(params, trn_data, 10000, valid_sets=[trn_data, val_data], verbose_eval=100, early_stopping_rounds=500, 
                categorical_feature=cate_feat,
                feval=cita_score, evals_result=None
               )

pred = lgb.pred

这是train DataFrame:

print(train.head())

   time      event_type  pv   uv   distinct_id          browser  \
0  20181101  $pageview  6549  674 -8539420110265898132     NaN   
1  20181101  $pageview  6549  674 -1032985922238039245  Chrome   
2  20181101  $pageview  6549  674 -1032985922238039245  Chrome   
3  20181101  $pageview  6549  674 -1032985922238039245  Chrome   
4  20181101  $pageview  6549  674 -1046230289121081999     NaN   

  browser_version  is_first_day  is_login lib lib_version       os os_version  \
0             NaN           1.0         0  JS     4.1.0.3      NaN        NaN   
1    70.0.3538.77           1.0         0  JS     4.1.0.3  Windows         10   
2    70.0.3538.77           1.0         0  JS     4.1.0.3  Windows         10   
3    70.0.3538.77           1.0         0  JS     4.1.0.3  Windows         10   
4             NaN           1.0         0  JS     4.1.0.3      NaN        NaN   

  platform  screen_height  screen_width     title  \
0       JS         1024.0        1024.0     demo   
1       JS         1080.0        1920.0     register   
2       JS         1080.0        1920.0     demo   
3       JS         1080.0        1920.0     register      
4       JS         1600.0        1600.0     private deploy   

                                                 url      country  province city  \
0  https://ark.analysys.cn/portal/industry-demo.html      China       PK    PK   
1  https://ark.analysys.cn/view/sign/signup.html?...      China       PK    PK   
2  https://ark.analysys.cn/portal/industry-demo.html      China       SH    SH   
3  https://ark.analysys.cn/view/sign/signup.html?...      China       SH    SH   
4  https://ark.analysys.cn/portal/access-private....      China       PK    PK   

                                            referrer     is_first_time model  \
0                                                NaN            NaN    NaN   
1  https://ark.analysys.cn/?utm_campaign=%E6%96%B...            NaN    NaN   
2  https://ark.analysys.cn/?utm_campaign=%E6%96%B...            NaN    NaN   
3  https://ark.analysys.cn/portal/industry-demo.html            NaN    NaN   
4                                                NaN            NaN    NaN   

  brand utm_campaign utm_content utm_medium utm_source utm_term  \
0   NaN          NaN         NaN        NaN        NaN      NaN   
1   NaN          NaN         NaN        NaN        NaN      NaN   
2   NaN          NaN         NaN        NaN        NaN      NaN   
3   NaN          NaN         NaN        NaN        NaN      NaN   
4   NaN          NaN         NaN        NaN        NaN      NaN   

  utm_campaign_id  startup_time time_zone  web_crawler traffic_source_type  \
0             NaN  1.540976e+12       NaN          NaN                 NaN   
1             NaN  1.541053e+12       NaN          NaN                 NaN   
2             NaN  1.541053e+12       NaN          NaN                 NaN   
3             NaN  1.541053e+12       NaN          NaN                 NaN   
4             NaN  1.541018e+12       NaN          NaN                 NaN   

   search_engine social_share_from referrer_domain  social  scene  \
0            NaN               NaN             NaN     NaN    NaN   
1            NaN               NaN             NaN     NaN    NaN   
2            NaN               NaN             NaN     NaN    NaN   
3            NaN               NaN             NaN     NaN    NaN   
4            NaN               NaN             NaN     NaN    NaN   

  search_keyword  scene_type  channel language session_id  social_media  \
0            NaN         NaN      NaN      NaN        NaN           NaN   
1            NaN         NaN      NaN      NaN        NaN           NaN   
2            NaN         NaN      NaN      NaN        NaN           NaN   
3            NaN         NaN      NaN      NaN        NaN           NaN   
4            NaN         NaN      NaN      NaN        NaN           NaN   

   signup_time url_domain  is_time_calibrated  click_x  click_y device_type  \
0          NaN        NaN                 NaN      NaN      NaN         NaN   
1          NaN        NaN                 NaN      NaN      NaN         NaN   
2          NaN        NaN                 NaN      NaN      NaN         NaN   
3          NaN        NaN                 NaN      NaN      NaN         NaN   
4          NaN        NaN                 NaN      NaN      NaN         NaN   

   element_path  page_height  page_width  event_duration  viewport_height  \
0           NaN          NaN         NaN             NaN              NaN   
1           NaN          NaN         NaN             NaN              NaN   
2           NaN          NaN         NaN             NaN              NaN   
3           NaN          NaN         NaN             NaN              NaN   
4           NaN          NaN         NaN             NaN              NaN   

   viewport_position  viewport_width  campaign_shortlink  pagename  nav_name  \
0                NaN             NaN                 NaN       NaN       NaN   
1                NaN             NaN                 NaN       NaN       NaN   
2                NaN             NaN                 NaN       NaN       NaN   
3                NaN             NaN                 NaN       NaN       NaN   
4                NaN             NaN                 NaN       NaN       NaN   

   referrer_demo  board_name  click_position datafrom  day  
0            NaN         NaN             NaN      NaN    0  
1            NaN         NaN             NaN      NaN    0  
2            NaN         NaN             NaN      NaN    0  
3            NaN         NaN             NaN      NaN    0  
4            NaN         NaN             NaN      NaN    0  

当我尝试使用 lgb.train 训练模型时,出现错误:

 41 clf = lgb.train(params, trn_data, 10000, valid_sets=[trn_data, val_data], verbose_eval=100, early_stopping_rounds=500, 
 42                 categorical_feature=cate_feat,

---> 43 feval=cita_score, evals_result=None 44 ) 45

~/.local/lib/python3.5/site-packages/lightgbm/engine.py in train(params, train_set, num_boost_round, valid_sets, valid_names, fobj, feval, init_model, feature_name, categorical_feature, early_stopping_rounds, evals_result, verbose_eval, learning_rates, keep_training_booster, callbacks) 140 ._set_predictor(predictor) \ 141 .set_feature_name(feature_name) \ --> 142 .set_categorical_feature(categorical_feature) 143 144 is_valid_contain_train = False

~/.local/lib/python3.5/site-packages/lightgbm/basic.py in set_categorical_feature(self, categorical_feature) 1196
Dataset with set categorical features. 1197 """ -> 1198 if self.categorical_feature == categorical_feature: 1199 return self 1200 if self.data is not None:

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

我搜索了一些相关问题,发现其中一些问题由于 numpy.ndarray 问题而出现此类错误,例如 here .
但我想我在这里没有发现类似的问题。
那么有人可以帮助我吗?
提前致谢。

最佳答案

以下是导致错误发生的原因。

~/.local/lib/python3.5/site-packages/lightgbm/basic.py

1200 |    if self.data is not None:

查看引用herelightgbm.train() 方法期望“train”参数是一个 lightgbm.Dataset,您可以找到其文档 here .

因此,您需要为数据集创建一个 lightgbm.Dataset 对象。您可以按如下方式进行:

import lightgbm as lgb
...
lgb_train = lgb.Dataset(data=X_train, label=y_train)

然后,您可以毫无错误地训练模型。

关于python - lgb.train ValueError : The truth value of an array with more than one element is ambiguous. 使用 a.any() 或 a.all(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57797940/

相关文章:

Python:如何从字典中创建两个列表

python - 在 Pandas DataFrame 中添加新列时结果不一致。它是系列还是值?

arrays - 在Numpy Array中转换Python get request(jpg content)的响应

python - 在 SWIG 中返回未指定大小的 numpy 数组

python - numpy.unique 对 numpy.array 的对象表现得很奇怪

python - 使用 Scapy/Python 发送 "ANY"响应

python - 将新计算合并回原始 pandas 数据框中

python - 用于创建 numpy 数组的多个深拷贝的一个衬垫?

python - 在 OS X 上为 python3 创建 virtualenv 时遇到问题

pandas - Dask相当于Pandas的替代品吗?