核心函数


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相关推荐

  1. 随机森林算法(Random Forest)Python实现

    目录 前言 一.什么是Random Forest ? 1.1 什么是监督式机器学习? 1.2 什么是回归和分类? 1.3 什么是决策树? 1.4 什么是随机森林? 二.Random Forest 的构 ...

  2. R语言使用caret包构建随机森林模型(random forest)构建回归模型、通过method参数指定算法名称、通过ntree参数指定随机森林中树的个数

    R语言使用caret包构建随机森林模型(random forest)构建回归模型.通过method参数指定算法名称.通过ntree参数指定随机森林中树的个数 目录

  3. R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型

    R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型 目录 R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型

  4. 使用R构建随机森林回归模型(Random Forest Regressor)

    使用R构建随机森林回归模型(Random Forest Regressor) 目录 使用R构建随机森林回归模型(Random Forest Regressor) 安装包randomForest 缺失值 ...

  5. 基于集成学习方法Random Forest、Adaboost、GBDT、LightGBM、XGBoost的调参、建模、评估实现kaggle竞赛员工离职案例分析(2)

    基于集成学习方法Random Forest.Adaboost.GBDT.LightGBM.XGBoost的调参.建模.评估实现kaggle竞赛员工离职案例分析(2) 引言 3. adaboost模型分 ...

  6. 最常用的决策树算法(二)Random Forest、Adaboost、GBDT 算法

    决策树是一个非常常见并且优秀的机器学习算法,它易于理解.可解释性强,其可作为分类算法,也可用于回归模型.本文将分三篇介绍决策树,第一篇介绍基本树(包括 ID3.C4.5.CART),第二篇介绍 Ran ...

  7. 【ML】随机森林(Random Forest) 从入门到放弃再到掌握

    目录 集成学习 决策树 Boosting Adaboost GBDT 梯度提升决策树是属于boosting集成学习的一种方法,通过构建多颗CART回归树,每一轮利用上一轮学习器的残差进行树的创建.该残 ...

  8. [Machine Learning] Random Forest 随机森林

    阅读目录 1 什么是随机森林? 2 随机森林的特点 3 随机森林的相关基础知识 4 随机森林的生成 5 袋外错误率(oob error) 6 随机森林工作原理解释的一个简单例子 7 随机森林的Pyth ...

  9. 为什么在实际的 kaggle 比赛中 gbdt 和 random forest 效果非常好?

    北京 | 高性能计算之GPU CUDA课程 11月24-26日 3天密集学习 快速带你晋级阅读全文> 这是一个非常好,也非常值得思考的问题.换一个方式来问这个问题:为什么基于 tree-ense ...

  10. 随机森林实例:利用基于CART算法的随机森林(Random Forest)树分类方法对于红酒质量进行预测

    随机森林实例:利用基于CART算法的随机森林(Random Forest)树分类方法对于红酒质量进行预测 1.引言 2.理论基础 2.1 什么是决策树 2.2 特征选择的算法 2.2.1 ID3:基于 ...

最新文章

  1. 在linux下查询日志
  2. python蟒蛇绘制 C
  3. 分布式锁是啥?zk还是redis?
  4. mysql 隐藏中间四位_MySQL知识体系——索引
  5. 部署web应用程序到tomcat
  6. linux jira mysql_JIRA配置连接MySQL数据库
  7. iOS之 开发学习笔记-block
  8. RocketMQ 下载、安装与 单机启动
  9. string 操作 java_Java中String类的一些常见问题
  10. visio是什么软件
  11. 任务一:统计基础知识-样本与总体、均值与方差、二项分布、泊松分布
  12. psm倾向得分匹配法举例_倾向得分匹配(PSM)操作过程与问题反思
  13. 服务器vmware新建虚拟机教程,如何创建虚拟机教程全解
  14. 备战软件设计大赛经验分享篇
  15. 独立看门狗和窗口看门狗的区别
  16. latex多行公式加大括号、整体编号及多行编号及不同方法的区别
  17. NTKO OFFICE文档控件
  18. matlab给程序加总标题,【转】matlab标题,给figure加标题,subplot的部分用法
  19. 3D立体相册不过是冷锋蓝plus版 html+css
  20. 手工命令行打包java工程为war包

热门文章

  1. pyaudio:基于pyaudio利用Python编程从电脑端录制音频保存到指定文件夹+将录音读取出来
  2. Pixi.js文档笔记-起步
  3. 大神详解开源 BUFF 增益攻略丨直播
  4. python和mysql匹配吗_python使用mysql
  5. 系统分析员应具备的能力
  6. Levels - 虚幻引擎场景制作
  7. vob文件怎么转换成mp4?
  8. React Antd4 CRA / Next.js / Vite 按需加载组件的 CSS / Less
  9. python|数据分析
  10. 【NOIP practice】BSOJ 3140 冲出亚洲 模拟