【xgboost】使用xgboost训练一个简单模型

使用pandas读取特征数据,并处理数据中的双引号
使用xgboost训练一版模型
xgboost==1.6.2

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
import xgboost as xgb
import logging
import csv
from xgboost import XGBClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import roc_auc_score, accuracy_score, log_lossmodel_version = "v101"
root_path = "/home/.../model/xgboost_tool"class DataProcess(object):def __init__(self, train_path, test_path):self.train_data = pd.read_csv(train_path, header=None, sep="\t", quoting=csv.QUOTE_MINIMAL, escapechar='\\')self.train_data.replace('""', '', inplace=True)self.train_df = self.train_data.apply(pd.to_numeric, errors='coerce')self.test_data = pd.read_csv(test_path, header=None, sep="\t", quoting=csv.QUOTE_MINIMAL, escapechar='\\')self.test_data.replace('""', '', inplace=True)self.test_df = self.test_data.apply(pd.to_numeric, errors='coerce')def data_process(self, mode="train"):if mode == "train":X_train, X_dev, Y_train, Y_dev = self.train_data_process()return X_train, X_dev, Y_train, Y_develse:X_test, Y_test = self.test_data_process()return X_test, Y_testdef train_data_process(self):data_X = self.train_df.iloc[:, 2:].astype(float)data_Y = self.train_df.iloc[:, 0].astype(int)X_train, X_dev, Y_train, Y_dev = train_test_split(data_X, data_Y, test_size=0.2)return X_train, X_dev, Y_train, Y_devdef test_data_process(self):X_test = self.test_df.iloc[:, 2:].astype(float)Y_test = self.test_df.iloc[:, 0].astype(int)return X_test, Y_testdef xgb_fit_single(X_train, Y_train, X_test, Y_test):"""模型训练"""logging.info("Train model start...")# 决策树数量num_round = 10max_depth = 5learning_rate = 0.1model = XGBClassifier(max_depth=max_depth, learning_rate=learning_rate, n_estimators=num_round, silent=True,objective='binary:logistic')eval_set = [(X_test, Y_test)]model.fit(X_train, Y_train, eval_metric=["auc", "logloss"], eval_set=eval_set, verbose=True)model_name = f"{num_round}_{max_depth}_{learning_rate}_{model_version}.json"model.save_model(f"{root_path}/saved_model/{model_name}")return modelif __name__ == '__main__':train_file_path = "/home/.../train.csv"test_file_path = "/home/.../test.csv"dp = DataProcess(train_file_path, test_file_path)X_train, X_dev, Y_train, Y_dev = dp.data_process(mode="train")print("Start xgboost training")model = xgb_fit_single(X_train, Y_train, X_dev, Y_dev)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你不知道的JavaScript---深入理解 JavaScript 中的 this 关键字

你好,我是小白Coding日志,一个热爱技术的程序员。在这里,我分享自己在编程和技术世界中的学习心得和体会。希望我的文章能够给你带来一些灵感和帮助。欢迎来到我的博客,一起在技术的世界里探索前行吧! 在 JavaScript …

大型网站系统架构演化实例_4.数据库读写分离

1.数据库读写分离 网站在使用缓存后,使对大部分数据读操作访问都可以不通过数据库就能完成,但是仍有一部分操作(缓存访问不命中、缓存过期)和全部的写操作都需要访问数据库,在网站的用户达到一定规模后&#x…

Dockerfile CMD、ENTRYPOINT 区别

ENTRYPOINT与CMD都可以对iamge配置启动命令。但两者之间还是有一些细微的区别。多数情况下需要用户在二者中选择其一使用,但也可以共同使用两者。下面将具体分析二者不同的使用场景。 ENTRYPOINT or CMD 最终,ENTRYPOINT与CMD都提供了一个方法&#xff0…

通过实例学C#之ArrayList

介绍 ArrayList对象可以容纳若干个具有相同类型的对象,那有人说,这和数组有什么区别呢。其区别大概可以分为以下几点: 1.数组效率较高,但其容量固定,而且没办法动态改变。 2.ArrayList容量可以动态增长,但…

ros1中python3包调用自定义.py文件

ros中python包相互import不成功问题 问题解决办法 问题 在ros工程中,运行python文件难以直接import自己写的py文件,相互之间无法import,但是在python3虚拟环境python *.py文件就可以正常运行! 注意这里还有个问题,我…

❤️‍FlyFlow工作流周更来咯~~

FlyFlow 借鉴了钉钉与飞书的界面设计理念,致力于打造一款用户友好、快速上手的工作流程工具。相较于传统的基于 BPMN.js 的工作流引擎,我们提供的解决方案显著简化了操作逻辑,使得用户能够在极短的时间内构建定制化的业务流程,即便…

前端近7天,近半个月,近1个月,近1年的日期处理

前端如何获取近7天,近1年的日期进行查询? methods:{//近7天getRangeDate(ranges) {let nowDays new Date();let getYear nowDays.getFullYear();let getMonth nowDays.getMonth() 1;let getDate nowDays.getDate();let nd new Date();nd nd.valueOf();nd nd - ranges…

记录汇川:五个ST案例

起保停: 简单数学教学: 数据查找: 按钮检测: 数据堆栈:

【k8s】:kubectl 命令设置简写启用自动补全功能

【k8s】:kubectl 命令设置简写&启用自动补全功能 1、设置kubectl命令简写2、启用kubectl自动补全功能💖The Begin💖点点关注,收藏不迷路💖 Kubernetes(K8s)是一个强大的容器编排平台,而kubectl则是与之交互的命令行工具。尽管Kubernetes提供了强大的功能,但有时…

wiringpi库的应用 -- sg90 定时器 oled

sg 90舵机: 接线: VCC -- 红 GND -- 地 信号线 -- 黄 -- pwm 定时器: 先玩定时器: sg90 需要的pwm波需要定时器输出,so我们得先来玩一下定时器 分析:实现定时器,通过itimerval结构体以及函数setitimer产生的信号,系统…

python装饰器系列教程(1)

若为了与用户交互,有如下代码 def messageOne():print("今天天气是晴转多云")def messageTwo():print("今天的空气质量为优")messageOne() messageTwo()现需在每条提示信息之前加上一条关于客户来自中国的信息,可改写为 def messa…

快手本地生活服务商系统怎么操作?

当下,抖音和快手两大短视频巨头都已开始布局本地生活服务,想要在这一板块争得一席之地。而这也很多普通人看到了机遇,选择成为抖音和快手的本地生活服务商,通过将商家引进平台,并向其提供代运营服务,而成功…

深入探讨虚拟现实中的新型安全威胁:“盗梦攻击”及其防御策略

随着虚拟现实(VR)技术的飞速发展,用户体验达到了前所未有的沉浸水平,但也暴露在一系列新的安全威胁之下。本文着重介绍了近期出现的一种高度隐秘且影响深远的攻击手段——“盗梦攻击”。这一概念由芝加哥大学的研究人员提出&#…

前端打包webpack vite

起步 | webpack 中文文档 | webpack中文文档 | webpack中文网 npm run build 1webpack: mkdir webpack-demo cd webpack-demo npm init -y npm install webpack webpack-cli --save-dev vite : 快速上手 | Vue.js

介绍TCP协议标志位

TCP协议中的控制位(Flags)是TCP头部中的6个标志位,用于控制TCP连接的建立、维护和终止过程,以及在数据传输中的一些特定行为。以下是对每个标志位的详细介绍: SYN (Synchronize): 功能:用于建立…

【Entity Framework】闲话EF中批量配置

【Entity Framework】闲话EF中批量配置 文章目录 【Entity Framework】闲话EF中批量配置一、概述二、OnModelCreating中的批量配置元数据API的缺点 三、预先约定配置忽略类型默认类型映射预先约定配置的限制约定添加新约定替换现有约定约定实现注意事项 四、何时使用每种方法进…

游戏登录界面制作

登录界面制作 1.导入模块和初始化窗口 import subprocessimport tkinter as tkimport picklefrom tkinter import messageboxwindow tk.Tk()window.title(Welcome)window.geometry(450x300) 导入必要的模块,并初始化了主窗口window,设置了窗口的标题和…

【技巧】Leetcode 169. 多数元素【简单】

多数元素 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 : 输入:nums [2,2,1,1,1,2,2] 输出&a…

day22 java多线程 线程安全问题解决方案

线程安全问题 [面试题]继承Thread和实现Runnable有什么区别? 1.实现接口和继承类 - 实现接口更灵活因为可以多实现。 2.线程安全 同步代码块 : 继承Thread : 锁不可以是this 实现Runnable : 锁可以是this 同步方法 继承Thread : 同步方法要使用静态同步…

修改taro-ui-vue3的tabs组件源码增加数字标签

需求:taro-ui-vue3的tabs组件上增加数字标记 步骤一:node_modules文件夹下找到taro-ui-vue3/lib/tabs/index.js 把173行的这一段替换成下面这段,然后写上样式 default: () > item.number ? [h(View, {class: at-tabs__item_in}, {defau…