Python 构建 Random Forest 和 XGBoost
核心函数
def train_model(x_train, y_train, x_test, model_name, cv_state=True):'''Parameters----------x_train : 训练集 x, np.array类型二维数组, [samples_train,features_train]y_train : 训练集 y np.array类型一维数组, [samples_train]x_test : 测试集 x np.array类型二维数组, [samples_test,features_test]model_name : 选用什么模型 :random forest / XGBcv_state: 是否需要模型因子挑选Returns-------y_predictoftest: 根据测试集 x 得到的预报测试集y'''if cv_state: #cv_state=True 则使用gridsearchCv 挑选最优参数if model_name == 'random forest':model = RandomForestRegressor(random_state=1, criterion='mse')# 挑选参数paremeters = [{"max_features": range(1, 32, 3),"min_samples_leaf": range(1, 20, 3),"max_depth": range(1, 20, 3)}]grid = GridSearchCV(model, paremeters, cv=10, scoring="neg_mean_squared_error",verbose=10)grid.fit(x_train, y_train)print('best_params_=', grid.best_params_)print('best_score_=', grid.best_score_)model = RandomForestRegressor(random_state=1, criterion='mse',max_features=grid.best_params_['max_features'],min_samples_leaf=grid.best_params_['min_samples_leaf'],max_depth=grid.best_params_['max_depth'])elif model_name == 'XGB':model = xgb.XGBRegressor(random_state=1)# 挑选参数parameters = [{"eta": [0.3, 0.2, 0.1],"max_depth": [3, 5, 6, 10, 20],"n_estimators": [100, 200, 500],'gamma': [0, 0.1, 0.2, 0.5, 1]}]grid = GridSearchCV(model, parameters, cv=10, scoring="neg_mean_squared_error",verbose=10)grid.fit(x_train, y_train)print('best_params_=', grid.best_params_)print('best_score_=', grid.best_score_)model = xgb.XGBRegressor(random_state=1,eta=grid.best_params_['eta'],max_depth=grid.best_params_['max_depth'],n_estimators=grid.best_params_['n_estimators'],gamma=grid.best_params_['gamma'])else: #cv_state=False 则根据自己需要修改模型参数后直接推理if model_name == 'random forest':model = RandomForestRegressor(random_state=1, criterion='mse', max_depth=7, max_features=31,min_samples_leaf=10) # random_state=1,criterion='mse',max_depth=7,max_features=31,min_samples_leaf=10elif model_name == 'XGB':#model = xgb.XGBRegressor(random_state=1, learning_rate=0.1, max_depth=2, n_estimators=100)model = xgb.XGBRegressor(random_state=1, gamma=0.1, max_depth=3, n_estimators=100)regr = model.fit(x_train, y_train)y_predictoftest = regr.predict(x_test)return y_predictoftest
在调用train_model前你需要额外做的一些事情:
1. 加载必要的库:
import numpy as np
import pandas as pd
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestRegressor
import xgboost as xgb
from sklearn.model_selection import StratifiedKFold
2. 根据自己的数据处理数据
x_train,y_train, x_test,y_test, 类型描述可看train_model中描述
3. 调用函数
y_predictoftest=train_model(x_train,y_train, x_test,'XGB',cv_state=True)
如果想调用XGB,就用'XGB';
如果想调用random forest,就用'random forest'
cv_state: 是否需要GridSearchCV进行调参。
4. 如果想自己调参,可以参阅官网
scikit-learn 官网Random Forest 部分:
分类器:
sklearn.ensemble.RandomForestClassifier — scikit-learn 1.1.1 documentation
回归器:
sklearn.ensemble.RandomForestRegressor — scikit-learn 1.1.1 documentation
XGBoost :
XGBoost Parameters — xgboost 1.6.1 documentation
Python 构建 Random Forest 和 XGBoost相关推荐
- 随机森林算法(Random Forest)Python实现
目录 前言 一.什么是Random Forest ? 1.1 什么是监督式机器学习? 1.2 什么是回归和分类? 1.3 什么是决策树? 1.4 什么是随机森林? 二.Random Forest 的构 ...
- R语言使用caret包构建随机森林模型(random forest)构建回归模型、通过method参数指定算法名称、通过ntree参数指定随机森林中树的个数
R语言使用caret包构建随机森林模型(random forest)构建回归模型.通过method参数指定算法名称.通过ntree参数指定随机森林中树的个数 目录
- R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型
R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型 目录 R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型
- 使用R构建随机森林回归模型(Random Forest Regressor)
使用R构建随机森林回归模型(Random Forest Regressor) 目录 使用R构建随机森林回归模型(Random Forest Regressor) 安装包randomForest 缺失值 ...
- 基于集成学习方法Random Forest、Adaboost、GBDT、LightGBM、XGBoost的调参、建模、评估实现kaggle竞赛员工离职案例分析(2)
基于集成学习方法Random Forest.Adaboost.GBDT.LightGBM.XGBoost的调参.建模.评估实现kaggle竞赛员工离职案例分析(2) 引言 3. adaboost模型分 ...
- 最常用的决策树算法(二)Random Forest、Adaboost、GBDT 算法
决策树是一个非常常见并且优秀的机器学习算法,它易于理解.可解释性强,其可作为分类算法,也可用于回归模型.本文将分三篇介绍决策树,第一篇介绍基本树(包括 ID3.C4.5.CART),第二篇介绍 Ran ...
- 【ML】随机森林(Random Forest) 从入门到放弃再到掌握
目录 集成学习 决策树 Boosting Adaboost GBDT 梯度提升决策树是属于boosting集成学习的一种方法,通过构建多颗CART回归树,每一轮利用上一轮学习器的残差进行树的创建.该残 ...
- [Machine Learning] Random Forest 随机森林
阅读目录 1 什么是随机森林? 2 随机森林的特点 3 随机森林的相关基础知识 4 随机森林的生成 5 袋外错误率(oob error) 6 随机森林工作原理解释的一个简单例子 7 随机森林的Pyth ...
- 为什么在实际的 kaggle 比赛中 gbdt 和 random forest 效果非常好?
北京 | 高性能计算之GPU CUDA课程 11月24-26日 3天密集学习 快速带你晋级阅读全文> 这是一个非常好,也非常值得思考的问题.换一个方式来问这个问题:为什么基于 tree-ense ...
- 随机森林实例:利用基于CART算法的随机森林(Random Forest)树分类方法对于红酒质量进行预测
随机森林实例:利用基于CART算法的随机森林(Random Forest)树分类方法对于红酒质量进行预测 1.引言 2.理论基础 2.1 什么是决策树 2.2 特征选择的算法 2.2.1 ID3:基于 ...
最新文章
- 在linux下查询日志
- python蟒蛇绘制 C
- 分布式锁是啥?zk还是redis?
- mysql 隐藏中间四位_MySQL知识体系——索引
- 部署web应用程序到tomcat
- linux jira mysql_JIRA配置连接MySQL数据库
- iOS之 开发学习笔记-block
- RocketMQ 下载、安装与 单机启动
- string 操作 java_Java中String类的一些常见问题
- visio是什么软件
- 任务一:统计基础知识-样本与总体、均值与方差、二项分布、泊松分布
- psm倾向得分匹配法举例_倾向得分匹配(PSM)操作过程与问题反思
- 服务器vmware新建虚拟机教程,如何创建虚拟机教程全解
- 备战软件设计大赛经验分享篇
- 独立看门狗和窗口看门狗的区别
- latex多行公式加大括号、整体编号及多行编号及不同方法的区别
- NTKO OFFICE文档控件
- matlab给程序加总标题,【转】matlab标题,给figure加标题,subplot的部分用法
- 3D立体相册不过是冷锋蓝plus版 html+css
- 手工命令行打包java工程为war包
热门文章
- pyaudio:基于pyaudio利用Python编程从电脑端录制音频保存到指定文件夹+将录音读取出来
- Pixi.js文档笔记-起步
- 大神详解开源 BUFF 增益攻略丨直播
- python和mysql匹配吗_python使用mysql
- 系统分析员应具备的能力
- Levels - 虚幻引擎场景制作
- vob文件怎么转换成mp4?
- React Antd4 CRA / Next.js / Vite 按需加载组件的 CSS / Less
- python|数据分析
- 【NOIP practice】BSOJ 3140 冲出亚洲 模拟