`"""# loading datadf = load_data_from_bigquery(query)# target datay = df["reaction"]# input datax = df.drop(columns=["reaction"], axis=1)# splitting data into training and validation setsx_train, x_val, y_train, y_val = train_test_split(x, y, test_size=0.2, random_state=1)# training the xgboost modelmodel = xgb.xgbclassifier(eval_metric='logloss')# setting the parameter gridparam_grid = { 'max_depth': [3, 4, 5], 'learning_rate': [0.01, 0.1, 0.2], 'n_estimators': [100, 200, 300], 'subsample': [0.8, 0.9, 1.0]}# initializing gridsearchcvgrid_search = gridsearchcv(estimator=model, param_grid=param_grid, cv=3, scoring='accuracy', verbose=1, n_jobs=-1)# executing the grid searchgrid_search.fit(x_train, y_train)# displaying the best parametersprint("best parameters:", grid_search.best_params_)# model with the best parametersbest_model = grid_search.best_estimator_# predictions on validation dataval_predictions = best_model.predict(x_val)val_prediction_probs = best_model.predict_proba(x_val)# predictions on training datatrain_predictions = best_model.predict(x_train)train_prediction_probs = best_model.predict_proba(x_train)# evaluating the model (validation data)val_metrics = compute_metrics(y_val, val_predictions, val_prediction_probs)print("optimized validation metrics:", val_metrics)# evaluating the model (training data)train_metrics = compute_metrics(y_train, train_predictions, train_prediction_probs)print("optimized training metrics:", train_metrics)
解释
从 bigquery 加载数据
以前,数据以 csv 文件的形式存储在 cloud storage 中,但缓慢的数据加载降低了我们学习过程的效率,促使我们转向 bigquery 以加快数据处理速度。
设置 bigquery 客户端
from google.cloud import bigqueryclient = bigquery.client()
此代码使用 google cloud 凭据初始化 bigquery 客户端,该凭据可以通过环境变量或 google cloud sdk 设置。
查询和加载数据
def load_data_from_bigquery(query): query_job = client.query(query) df = query_job.to_dataframe() return df
该函数执行 sql 查询并将结果作为 pandas 中的 dataframe 返回,从而实现高效的数据处理。
使用 xgboost 训练模型
xgboost 是一种利用梯度提升的高性能机器学习算法,广泛用于分类和回归问题。
https://arxiv.org/pdf/1603.02754
模型初始化
import xgboost as xgbmodel = xgb.xgbclassifier(eval_metric='logloss')
这里实例化了xgbclassifier类,使用对数损失作为评估指标。
数据分割
from sklearn.model_selection import train_test_splitx_train, x_val, y_train, y_val = train_test_split(x, y, test_size=0.2, random_state=1)
该函数将数据拆分为训练集和验证集,这对于测试模型的性能和避免过度拟合至关重要。
参数优化
from sklearn.model_selection import gridsearchcvparam_grid = { 'max_depth': [3, 4, 5], 'learning_rate': [0.01, 0.1, 0.2], 'n_estimators': [100, 200, 300], 'subsample': [0.8, 0.9, 1.0]}grid_search = gridsearchcv(estimator=model, param_grid=param_grid, cv=3, scoring='accuracy', verbose=1, n_jobs=-1)grid_search.fit(x_train, y_train)
gridsearchcv 执行交叉验证以找到模型的最佳参数组合。
模型评估
使用验证数据集上的精度、召回率、f1 分数和对数损失来评估模型的性能。
def compute_metrics(labels, predictions, prediction_probs): from sklearn.metrics import precision_score, recall_score, f1_score, log_loss return { 'precision': precision_score(labels, predictions, average='macro'), 'recall': recall_score(labels, predictions, average='macro'), 'f1': f1_score(labels, predictions, average='macro'), 'loss': log_loss(labels, prediction_probs) }val_metrics = compute_metrics(y_val, val_predictions, val_prediction_probs)print("optimized validation metrics:", val_metrics)
输出结果
运行笔记本时,您将得到以下输出,显示最佳参数和模型评估指标。
best parameters: {'learning_rate': 0.2, 'max_depth': 5, 'n_estimators': 300, 'subsample': 0.9}optimized validation metrics: {'precision': 0.8919952583956949, 'recall': 0.753797304483842, 'f1': 0.8078981867164722, 'loss': 0.014006406471894417}optimized training metrics: {'precision': 0.8969556573175115, 'recall': 0.7681976753444204, 'f1': 0.8199353049298048, 'loss': 0.012475375680566196}
附加信息
使用google云存储作为数据源
在某些情况下,从 google cloud storage 而不是 bigquery 加载数据可能更合适。以下函数从 cloud storage 读取 csv 文件并将其作为 pandas 中的 dataframe 返回,并且可以与 load_data_from_bigquery 函数互换使用。
from google.cloud import storagedef load_data_from_gcs(bucket_name, file_path): client = storage.client() bucket = client.get_bucket(bucket_name) blob = bucket.blob(file_path) data = blob.download_as_text() df = pd.read_csv(io.stringio(data), encoding='utf-8') return df
使用示例:
bucket_name = ''file_path = ''df = load_data_from_gcs(bucket_name, file_path)
使用 lightgbm 训练模型
如果您想使用 lightgbm 而不是 xgboost,只需在同一设置中将 xgbclassifier 替换为 lgbmclassifier 即可。
import lightgbm as lgbmodel = lgb.LGBMClassifier()
结论
未来的文章将介绍如何使用 bigquery ml (bqml) 进行训练。
以上就是BigQuery 和 XGBoost 集成:用于二元分类的 Jupyter Notebook 教程的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1348940.html
赞 (0)
打赏
微信扫一扫
支付宝扫一扫
了解 Python 中常规类和数据类之间的差异
上一篇
2025年12月13日 12:27:19
使用 Asyncio 创建和管理任务
下一篇
2025年12月13日 12:27:38
相关推荐
推荐C盘清理方案:系统自带工具如磁盘清理、存储感知和手动清%temp%目录安全可靠,适合日常维护;第三方工具CCleaner、金舟Windows优化大师、风云C盘清理大师和全能C盘清理专家提供一键深度清理,操作便捷且误删率低;空间分析工具WizTree、SpaceSniffer和TreeSize可可…
要解决 mysql 慢查询问题,首先要开启慢查询日志,其次使用 mysqldumpslow 分析日志,再通过 explain 查看执行计划,最后根据常见优化建议改进 sql 和索引。具体步骤如下:一、修改配置文件或动态开启慢查询日志,并设置阈值和路径;二、使用 mysqldumpslow 工具分析慢…
workerman网络编程实践:构建可靠的即时数据同步系统 随着互联网和移动设备的普及,即时通讯变得越来越重要。在不同设备和平台之间实现即时通讯和数据同步已经成为开发者的常见需求。在这篇文章中,我们将探讨如何使用Workerman网络编程框架构建一个可靠的即时数据同步系统。 Workerman简介W…
20相供电主板在超频下表现更稳,实测显示其VRM温度更低、电压波动更小、性能输出更一致,尤其适合极限超频和高负载场景,而14相供电配合优质用料也能满足主流超频需求,普通用户无需盲目追求高相数。 主板供电相数直接影响CPU在高负载和超频状态下的电压稳定性和温度控制。很多人在选择主板时会看到“14相”或…
苹果官网正品查询入口是https://checkcoverage.apple.com/cn/zh/,输入序列号可查保修状态、激活日期、销售区域及AppleCare+服务,支持多产品线验证,识别非法修改序列号,并显示失窃设备警告,提供多语言支持。 苹果官网正品查询入口在哪里?这是不少网友都关注的,接下…
近日,有数码博主透露,华为即将推出的旗舰新机mate 80系列预计将在11月中下旬正式亮相。此前曾有消息称发布会或将提前至10月举行,但最终官方仍决定维持原定节奏,于11月末发布。此举延续了华为mate系列一贯的发布时间策略,意在与同期发布的其他高端旗舰机型展开正面竞争。 华为Mate 70系列 据…
答案:通过数据库设计、前端表单、后端处理和评论展示四步实现PHP视频留言功能。1. 创建comments表存储信息;2. 构建表单提交昵称与评论;3. 用add_comment.php接收并存入数据库;4. 在页面读取并安全输出评论,防止XSS。 要实现视频留言评论功能,PHP可以结合前端页面、数据…
系统异常是程序运行中由JVM抛出的RuntimeException,如空指针、数组越界,会导致程序中断并打印堆栈;逻辑错误是程序语法正确但结果不符预期,如条件写反、循环次数错误,不会崩溃但行为异常。两者区别在于是否抛出异常、是否中断执行及调试方式不同,需通过防御性编程、单元测试和日志调试加以防范。 …
歧路旅人2最新通用兑换码:qlyrdldbz2025、qdn4xkcndx、qllrdldbz等,可在游戏内商城直接使用,领取剑士黄金武器皮肤、双倍经验加成及1000叶币,奖励丰富限时有效,先到先得。 无限资源畅玩|游戏辅助工具: 2025年最新可用兑换码汇总如下: 1、兑换码: qlyrdldbz…
使用ss或lsof命令可快速查看端口占用情况,如sudo ss -tulnp | grep :端口号或sudo lsof -i :端口号,结合PID进一步通过ps或/proc文件系统定位进程详情。 在Linux系统中,查看某个端口被哪个进程占用,常用的方法是使用命令行工具结合网络和进程信息进行查询。…
夸克浏览器电脑网页版访问入口是https://www.quark.cn/,用户可直接在浏览器地址栏输入该链接访问,其界面采用极简设计并集成智能搜索、网盘服务与跨设备同步等功能。 立即进入“☞☞☞☞☞点击夸克资源网(永久免费)入口☜☜☜☜☜”; 立即进入“☞☞☞☞☞点击夸克浏览器电脑网页版访问入口☜☜…
首先确认WPS模板库中的“免费”标识,通过搜索或分类查找目标模板,点击带“免费”标签的模板预览并使用“立即使用”功能下载,避免选择VIP或付费项;下载后可直接编辑,并通过“另存为”保存为.dotx或.potx格式以便重复调用,手机端登录账号还可同步收藏;注意部分模板含水印需会员去除,建议定期清理缓存…
swoole开发功能在移动端api服务器中的应用案例 引言:随着移动互联网时代的到来,移动应用程序的需求不断增长。为了满足这些需求,开发人员不得不在移动端构建高效稳定的服务器来处理这些请求。Swoole是一个基于PHP语言的高性能异步网络通信框架,可以为移动端API服务器提供强大的开发功能。本文将介…
第一段引用上面的摘要: 本文旨在帮助初学者理解在 Spring Boot 应用中何时以及如何使用 JUnit、Mockito 和集成测试。我们将探讨这些测试框架在 Controller、Service 和 Repository 层中的应用,并提供示例说明何时使用 Mockito 模拟对象,以及何时使…
配置本地域名需修改hosts文件并设置Web服务器虚拟主机。1. 在hosts添加“127.0.0.1 myproject.test”实现域名解析;2. Apache中编辑httpd-vhosts.conf添加VirtualHost指向项目目录,确保加载该配置文件后重启服务;3. Nginx中在vh…
几天前,《反恐精英2》进行了一次重大更新,对道具兑换系统进行了大幅调整:玩家现在可以用5件普通隐秘品质(红色)皮肤兑换1把普通刀具或1副普通手套(物品来源限定于指定系列),而5件stattrak™隐秘品质(红色)皮肤则可兑换1把stattrak™刀具(同样来自指定系列)。这一“五红换一金”机制的推出…