LightGBM错误:ValueError:为了提前停止,至少需要一个数据集和评估指标进行评估

2024-01-06

我正在尝试使用 gridsearch 训练 LightGBM,当我尝试训练模型时出现以下错误。

ValueError: For early stopping, at least one dataset and eval metric is required for evaluation

我提供了验证数据集和评估指标。不知道为什么我仍然遇到这个问题。这是我的代码。

train_data  = rtotal[rtotal['train_Y'] == 1]
test_data   = rtotal[rtotal['train_Y'] == 0]

trainData, validData = train_test_split(train_data, test_size=0.007, random_state = 123)

#train data prep
X_train = trainData.iloc[:,2:71]
y_train = trainData.loc[:,['a_class']]

#validation data prep
X_valid = validData.iloc[:,2:71]
y_valid = validData.loc[:,['a_class']]

#X_test
X_test = test_data.iloc[:,2:71]

import lightgbm as lgb
from sklearn.model_selection import GridSearchCV

gridParams = {
    'learning_rate': [0.005],
    'n_estimators': [40],
    'num_leaves': [16,32, 64],
    'objective' : ['multiclass'],
    'random_state' : [501],
    'num_boost_round' : [3000],
    'colsample_bytree' : [0.65, 0.66],
    'subsample' : [0.7,0.75],
    'reg_alpha' : [1,1.2],
    'reg_lambda' : [1,1.2,1.4],
    }

lgb_estimator = lgb.LGBMClassifier(boosting_type = 'gbdt', 
                                   n_estimators=500, 
                                   objective = 'multiclass', 
                                   learning_rate =  0.05, num_leaves =  64,  
                                   eval_metric  = 'multi_logloss',
                                   verbose_eval=20, 
                                   eval_set = [X_valid, y_valid],
                                   early_stopping_rounds=100)

g_lgbm = GridSearchCV(estimator=lgb_estimator, param_grid=gridParams, n_jobs = 3, cv= 3)

lgb_model = g_lgbm.fit(X=X_train, y=y_train)

从我在提供的代码中看到的,您有几个问题:

  1. 您将分类定义为多类,但并不完全是这样,因为您将输出定义为一列,我相信其中可能有多个标签。

  2. 如果您想提前停止,则需要提供验证集,如错误消息明确指出的那样。而且你需要用合适的方法来做。

如果您更正代码中的这些错误,它将愉快地运行:

gridParams = { 
    'learning_rate': [0.005],
    'n_estimators': [40],
    'num_leaves': [16,32, 64], 
    'random_state' : [501],
    'num_boost_round' : [3000],
    'colsample_bytree' : [0.65, 0.66],
    'subsample' : [0.7,0.75],
    'reg_alpha' : [1,1.2],
    'reg_lambda' : [1,1.2,1.4], 
    }

lgb_estimator = lgb.LGBMClassifier(boosting_type = 'gbdt', 
                                   n_estimators=500, 
                                   learning_rate =  0.05, num_leaves =  64,  
                                   eval_metric  = 'logloss',
                                   verbose_eval=20, 
                                   early_stopping_rounds=10)

g_lgbm = GridSearchCV(estimator=lgb_estimator, param_grid=gridParams, n_jobs = 3, cv= 3)

lgb_model = g_lgbm.fit(X=X_train, y=y_train, eval_set = (X_valid, y_valid))

...
[370]   valid_0's binary_logloss: 0.422895
[371]   valid_0's binary_logloss: 0.423064
[372]   valid_0's binary_logloss: 0.422681
[373]   valid_0's binary_logloss: 0.423206
[374]   valid_0's binary_logloss: 0.423142
[375]   valid_0's binary_logloss: 0.423414
[376]   valid_0's binary_logloss: 0.423338
[377]   valid_0's binary_logloss: 0.423864
[378]   valid_0's binary_logloss: 0.42381
[379]   valid_0's binary_logloss: 0.42409
[380]   valid_0's binary_logloss: 0.423476
[381]   valid_0's binary_logloss: 0.423759
[382]   valid_0's binary_logloss: 0.423804
Early stopping, best iteration is:
[372]   valid_0's binary_logloss: 0.422681
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LightGBM错误:ValueError:为了提前停止,至少需要一个数据集和评估指标进行评估 的相关文章

随机推荐

  • 匹配目录路径(不包括文件路径)的正则表达式

    我正在寻找 IIS 所需的正则表达式模式 基本上我希望它匹配任何目录路径但拒绝文件路径 我到处寻找但运气不佳 示例 匹配 directory content css 匹配 directory content css 拒绝 directory
  • 加载器在 chrome 中的同步 ajax 调用期间不工作

    加载程序在 google chrome 中的同步 异步 假 ajax 调用期间不工作 在 Firefox 和 IE 中工作正常 在我的调试测试期间 Loader 显示直到 ajax 请求开始 当请求发送到服务器时被删除或消失 我在服务器上保
  • 如何在Matlab中增量训练神经网络?

    假设我有很大的训练集 导致 Matlab 在训练时挂起 或者没有足够的内存来容纳训练集 是否可以将训练集分成几部分并逐部分训练网络 是否可以一次用一个样本 一个一个 来训练网络 您可以手动将数据集分成批次并逐一训练它们 for bn 1 n
  • Hibernate 查询获取日期记录忽略时间戳

    我在 DB Oracle 表之一中有一个时间戳列 tradedate 我使用 hibernate 作为持久层来获取数据并将其存储到数据库 我有一个要求 我需要按日期查询数据库 即 用户从 UI 传递一个日期 我需要根据该日期获取过滤后的数据
  • 如何使用 jquery html 和 php 将标签插入数据库

    我想将这些特定标签插入数据库 这是我的 HTML div div
  • OSX 上的 QT:托盘图标 - 图标停靠问题

    我的目的是创建一个没有自动显示主窗口的 QT 托盘应用程序 这个应用程序的启动是一个带有菜单的托盘图标 问题是我的停靠图标仍然显示在我的应用程序中 我的问题是 1 如何防止出现 Dock 图标 2 如果答案涉及将条目添加到生成的 pfile
  • 有没有办法将图像作为位图加载到 Glide

    我正在寻找一种使用位图作为 Glide 输入的方法 我什至不确定这是否可能 这是为了调整大小的目的 Glide 具有良好的图像缩放增强功能 问题是我的资源作为位图已经加载到内存中 我能找到的唯一解决方案是将图像存储到临时文件并将它们作为 i
  • ImportError:无法从“azure.servicebus”导入名称“ServiceBusClient”

    我想运行一个简单的 Azure 服务总线程序 我收到以下错误 ImportError cannot import name ServiceBusMessage from azure servicebus 当我在互联网上搜索时 我应该安装Az
  • 如何从倒数计时器完成方法调用另一个意图?

    我正在做 Android 测验 在我的代码中 我有倒计时器 当时间结束时 我希望下一个问题出现并且分数减少 对于分数递减 currentGame decrementScore 方法 如果我在计时器的 finish 方法中添加以下代码 它工作
  • 不存在的属性 HTML 输入字段

    将不存在的属性附加到 html 元素以便在 jquery 中使用它是一个好习惯吗 例如
  • 如何从另一个线程使用服务器更新java swing gui?

    我有一个 Java Swing 应用程序 每当传入的客户端尝试建立连接时 它都会启动一个新线程 该线程使用执行程序池来打开套接字服务器 该应用程序需要两个按钮 一个用于启动服务器 另一个用于停止服务器 我想要的是显示服务器状态 并禁用相反的
  • COM 自动化接口中允许的“out”参数类型

    我正在为应用程序实现 COM 自动化 双接口 自动化接口将从 VBScript 调用 我不太清楚该方法的参数允许使用哪些类型 我确实知道价值观基本上必须符合VARIANT 但这是否意味着每个类型的参数int必须通过一个VARIANT 或者可
  • 如何在Python中将元组的元组转换为pandas.DataFrame?

    如果问题太基本 也没有冒犯的意思 如果您需要更多信息 请与我们联系 我正在寻找一种想法 以干净 高效 Pythonic 的方式将方形元组转换为 pandas DataFrame 即来自 s 1 0 0 0 2 3 0 0 4 5 6 0 7
  • 在 Hibernate 中使用 Spring Data 查询时出现 NoViableAltException

    我正在使用指定 Spring Data 查询 Query在存储库方法上 但它抛出了NoViableAltException例外 这是我正在使用的存储库接口方法和注释 Query value SELECT one saveLine two s
  • 对 Julia 中的内存分配和垃圾收集感到困惑

    我对 Julia 中的内存分配有点困惑 我从常见问题解答中知道 http julia readthedocs org en latest manual faq 清除大变量使用的内存是通过将其设置为较小的值 例如 0 然后运行来完成的gc 但
  • Mac OS X 上带有 Cocoa WebView 的综合 Web 服务器

    我想创建一个 Webview 我可以完全控制它加载的内容 本质上 我想提供一个类的实例 它扮演 URL 中指定的各种 Web 服务器的角色 理想情况下 我会为这个 webview 提供一个委托 它会告诉委托它需要的每个 URL 并且委托将使
  • 卓:0.0.0.0/0 和 ::/0 是什么意思?

    在安全组中 我添加的每个入站端口都添加了两条规则 一条为 0 0 0 0 0 另一条为 0 它们分别是什么意思 Internet 协议版本 4 IPv4 中的默认路由被指定 作为 CIDR 表示法中的零地址 0 0 0 0 0 通常称为 四
  • Angular 反应式表单集和清除验证器

    请协助 我想删除表单中的所有验证器 请告知是否可能 如果不可能 如果您有一个包含 20 个或更多表单控件的表单组 删除验证器的更好方法是什么 请参阅下面的示例 ngOnInit this exampleFormGroup this form
  • ExoPlayer 2 的质量选择器

    我目前正在开发一个现场和电影播放器 应用程序 我选择了Exo播放器版本2播放这部电影 我对此了解不多 我想让用户选择电影的质量在播放器屏幕上 例如 720p 或 1080p 等 但我不知道如何获取现有品质的列表并将其显示给用户 下面的代码是
  • LightGBM错误:ValueError:为了提前停止,至少需要一个数据集和评估指标进行评估

    我正在尝试使用 gridsearch 训练 LightGBM 当我尝试训练模型时出现以下错误 ValueError For early stopping at least one dataset and eval metric is req