XGBoost的两种使用方式(1. sklearnAPI的库 2. XGBoost的原生库)及其区别

# 导入库文件和数据集
from sklearn.datasets import load_boston 
from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error,accuracy_score,precision_score, recall_score 
from sklearn.model_selection import train_test_split 
import math 

boston_data = load_boston() 
X = boston_data.data 
y = boston_data.target 
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=420)

1. sklearnAPI的库的使用方式

from xgboost import XGBRegressor 

reg = XGBRegressor( n_estimators = 20, #迭代次数 l
                   earning_rate = 0.1, #学习率 
                   max_depth=5 )
reg.fit(X_train, y_train) 
ypred = reg.predict(X_test) 
mean_squared_error(y_test, ypred)
math.sqrt(mean_squared_error(y_test, ypred))
# 设置eval_set参数,可以一边训练,一边测试 
reg.fit(X_train, y_train, eval_set = [(X_train, y_train), (X_test, y_test)])

2. XGBoost的原生库的使用方式
在这里插入图片描述
核心点:
DMatrix()类:用于封装数据,它是XGBoost自定义的一个数据矩阵类,目的是这种定义方式可以优化存储和运算速度;
XGBoost必须先使用字典设定参数集,再使用train()将参数输入,进行训练;

import xgboost as xgb
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)
# params:弱评估器(booster)有关的参数
params = {
    'eta': 0.1, #学习率
    'max_depth':5 #树的最大深度
}
num_round = 20 # 迭代轮数

bst = xgb.train(params=params,      #设置模型参数
                dtrain=dtrain,      #dtrain:训练数据集
                num_boost_round = num_round     #迭代轮数
               ) 

ypred = bst.predict(dtest)
mean_squared_error(y_test, ypred)
# 也可以一边训练,一边测试 
bst = xgb.train(
    params=params, 
    dtrain=dtrain, 
    num_boost_round = num_round, 
    evals=[(dtrain, 'train'),(dtest, 'test')] #evals:验证数据集
)  
result1 = bst.predict(dtest)
print(math.sqrt(mean_squared_error(y_test, result1)))

result2 = bst.predict(
    dtest,
    ntree_limit=19 #限制predict时使用的树的数目
)
print(math.sqrt(mean_squared_error(y_test, result2)))

调用xgboost.train()和sklearnAPI中的XGBRegressor,需要输入的参数是不同的。它们只是写法不同,功能是相同的。
比如第一个参数eta,就是XGBRegressor里的learning_rate。
只不过在sklearnAPI中,开发团队友好地将参数的名称调节成了与sklearn中其他算法类更相似的样子。

两种使用方式的区别:

  1. 建模流程略有不同:原生库的数据必须封装在DMatrix()中,再进行训练;sklearnAPI没有数据封装的过程;
  2. 原生XGBoost库的大部分参数通过params传递;sklearnAPI没有params这个参数,所有参数都是直接在类里 面赋值;
  3. 原生XGBoost库的train()函数即可用来处理分类问题,也可用来处理回归问题;sklearnAPI分别封装了分类函数与回归函数;
  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在原生JavaScript中使用`mavlink.js`,你可以按照以下步骤进行操作: 1. 下载`mavlink.js`:你可以从`mavlink.js`的GitHub仓(https://github.com/omcaree/mavlink.js)下载或克隆整个仓。 2. 在你的HTML文件中引入`mavlink.js`: ```html <script src="path/to/mavlink.js"></script> ``` 3. 创建一个Mavlink实例并设置消息处理程序: ```javascript const mavlink = new Mavlink(); mavlink.on('message', (message) => { // 在这里处理收到的消息 console.log('Received message:', message); }); mavlink.on('error', (err) => { // 处理错误 console.error('Error:', err); }); ``` 4. 连接到MAVLink设备或接收MAVLink数据源: ```javascript // 通过串口连接到MAVLink设备 mavlink.connect('/dev/ttyUSB0', 57600); // 或者从UDP数据源接收MAVLink数据 mavlink.connectUDP('127.0.0.1', 14550); ``` 5. 发送MAVLink消息: ```javascript const message = new mavlink.messages.heartbeat({ type: mavlink.MAV_TYPE.GCS, autopilot: mavlink.MAV_AUTOPILOT.INVALID, base_mode: mavlink.MAV_MODE_FLAG.MANUAL_INPUT_ENABLED, system_status: mavlink.MAV_STATE.STANDBY, }); mavlink.send(message); ``` 这只是一个简单的示例,你可以根据需要使用更多的MAVLink消息和功能。确保在页面加载时执行上述JavaScript代码。你可以根据需要将其放置在`<script>`标签中或将其放置在外部JavaScript文件中并进行引用。 希望这能帮助你在原生JavaScript中使用`mavlink.js`处理MAVLink协议!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值