2017.07.20回顾 xgboost安装 xgboost抄作业

本文记录了作者安装xgboost的过程,包括遇到的困难和解决方法,如conda安装失败后手动安装,以及xgboost在DMatrix格式上的应用。此外,还分享了在抄作业过程中学习到的新知识,如内存资源回收、数据框操作和数据描述统计。

1、上午主要就做rts的逻辑,稍微改了一下PTI的限制逻辑,然后编辑邮件,差不多时间进行提交

2、在这中间处理了一个老客户的问题,处理了live_time和work_time疑似BUG的问题,和新人讨论了一些最新的分析结果,其中我对非参检验和参数检验还不是很清楚,需要下来学习,老实说卡方检验的原理,我也只看过一半,应用点到是知道,她新提到的KS检验,我基本不了解

3、今天剩余时间主要就是抄作业啦,抄作业的其中一个难点就是xgboost的安装,我最后的安装方法应该是最无脑的,只是开始还是走了一些弯路,我一开始就想用conda安装,直接conda install xgboost,提示我没有这个包,但给出了提示,一个r-xgboost,另一个是py-xgboost,我于是很自然的就conda install py-xgboost,安装过程提示需要大量依赖,很多module需要升级,下载了很久,吃饭回来ok,conda cmd进入python shell,import xgboost成功,但是发现在notebook却报错,后来就一直是解决这个问题,按照报错信息进行了一些路径方面的探索,发现dll是存在的,但是不知道为何导入失败,有人表示缺乏一个VC的依赖,于是我在微软官网下载了VC2015的运行库,发现依然报错,spyder也报错,但是conda python shell却没有问题,我很苦恼,求助了很多人,准备尝试编译安装,但是这个时候发现了一个stackoverflow的回答,https://stackoverflow.com/questions/35139108/how-to-install-xgboost-in-anaconda-python-windows-platform,我首先用conda remove py-xgboost,然后


                
<think>好的,我现在需要帮助用户修改xgboost_model.py的代码,以便适配train_cic_xg.py中的模型保存功能。首先,我需要理解这两个文件的关系以及现有的实现差异。用户提到要确保模型保存功能一致,所以重点应该在于比较两个脚本中保存模型的部分,并调整xgboost_model.py以匹配train_cic_xg.py的做法。 首先,我应该查看train_cic_xg.py是如何保存模型的。通常,XGBoost模型保存有两种方式:使用内置的save_model方法或者使用Python的pickle模块。如果train_cic_xg.py使用的是save_model,那么在xgboost_model.py中可能需要调用model.save_model(),并确保路径和文件名格式一致。如果用的是pickle,那么可能需要导入joblib或pickle库,将模型对象序列化保存。 接下来,假设在train_cic_xg.py中,模型保存的代码可能是这样的: ```python model.save_model(f'model_cic_{timestamp}.xgb') ``` 或者 ```python import joblib joblib.dump(model, f'model_cic_{timestamp}.pkl') ``` 那么,用户需要将xgboost_model.py中的保存方式调整为同样的方法。同时,可能还需要处理时间戳的生成方式,确保文件名格式统一。例如,如果train_cic_xg.py使用特定格式的时间戳,如"%Y%m%d%H%M",那么xgboost_model.py也应该采用相同的格式。 此外,还要注意模型保存后的路径问题。两个脚本是否将模型保存在同一目录下?比如,是否都保存在./models/目录中,或者当前工作目录。如果路径不同,需要调整xgboost_model.py中的保存路径,以匹配train脚本的结构。 另外,可能还需要检查模型训练后的处理步骤。例如,在train_cic_xg.py中,是否在训练后立即保存,或者在验证之后保存最佳模型?如果使用了早停法(early stopping),可能需要保存最佳迭代的模型,这时需要确保xgboost_model.py中也使用相同的回调函数或参数,如xgb.callback.EarlyStopping,并在训练时保存最佳模型。 还有,模型的版本控制或命名规则是否一致?比如,文件名中是否包含数据集名称、日期、超参数等信息。如果train_cic_xg.py中有特定的命名规则,那么xgboost_model.py也需要遵循同样的规则,以便于后续管理和调用。 最后,测试修改后的代码是否能够正确保存模型,并且生成的文件与train脚本产生的文件格式和位置一致。可以编写一个简单的测试用例,训练模型后保存,并检查文件是否存在,以及能否成功加载并进行预测。 总结下来,关键步骤包括: 1. 确定train_cic_xg.py使用的模型保存方法(save_model或pickle/joblib)。 2. 调整xgboost_model.py中的保存代码,使用相同的方法和参数。 3. 统一文件名格式和保存路径。 4. 确保训练后的处理逻辑一致,如早停法后的最佳模型保存。 5. 测试验证修改后的代码是否正常工作。 如果在调整过程中发现train_cic_xg.py有其他相关的配置,比如日志记录、模型验证指标记录等,可能也需要在xgboost_model.py中添加相应的逻辑,保证整体流程的一致性。需要用户提供两个脚本的相关代码片段,以便更准确地定位差异,但基于现有信息,以上步骤是必要的。</think>根据train_cic_xg.py的模型保存实现,需在xgboost_model.py中做以下关键修改: 1. **统一保存方法** 在训练函数末尾添加模型保存逻辑,使用XGBoost内置的save_model方法: ```python import time from pathlib import Path def train_model(...): ... model = xgb.train(params, dtrain) # 创建模型保存目录 Path("./saved_models").mkdir(exist_ok=True) # 生成带时间戳的文件名 timestamp = time.strftime("%Y%m%d_%H%M%S") model_path = f"./saved_models/xgboost_model_{timestamp}.json" # 保存模型文件 model.save_model(model_path) print(f"Model saved to {model_path}") ``` 2. **格式一致性验证** 确保与train_cic_xg.py保持三个一致: - **文件格式**:使用JSON格式保存(`.json`扩展名) - **目录结构**:统一保存在`saved_models`子目录 - **时间格式**:采用年月日_时分秒格式`%Y%m%d_%H%M%S` 3. **版本控制增强建议** 可添加git commit hash增强可追溯性: ```python import subprocess def get_git_commit(): try: return subprocess.check_output( ['git', 'rev-parse', '--short', 'HEAD']).decode('utf-8').strip() except: return "nogit" # 在保存路径中添加commit hash commit_hash = get_git_commit() model_path = f"./saved_models/xgboost_{commit_hash}_{timestamp}.json" ``` 4. **完整代码示例** 参考train_cic_xg.py实现的完整训练流程: ```python import xgboost as xgb from sklearn.metrics import accuracy_score def xgboost_train(X_train, y_train, X_val, y_val): dtrain = xgb.DMatrix(X_train, label=y_train) dval = xgb.DMatrix(X_val, label=y_val) params = { 'objective': 'binary:logistic', 'eval_metric': 'logloss', 'max_depth': 6, 'eta': 0.1 } model = xgb.train( params, dtrain, num_boost_round=100, early_stopping_rounds=10, evals=[(dval, 'eval')] ) # 模型保存逻辑 Path("./saved_models").mkdir(exist_ok=True) timestamp = time.strftime("%Y%m%d_%H%M%S") model_path = f"./saved_models/model_{timestamp}.json" model.save_model(model_path) return model, model_path ``` 5. **验证加载测试** 添加模型加载验证函数确保兼容性: ```python def load_and_test(model_path, X_test): loaded_model = xgb.Booster() loaded_model.load_model(model_path) dtest = xgb.DMatrix(X_test) return loaded_model.predict(dtest) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值