R语言 xgboost处理多分类问题(在iris数据集上的实例)

使用XGBoost仅需简单调用xgboost包,需要注意的一点是数据需要转化为xgb.DMatrix()格式。

调用iris数据集

library(datasets)
library(xgboost)

n<-dim(iris)[1] #样本数
p<-dim(iris)[2]-1 #特征数
k<-dim(table(iris$Species)) #类别数

划分训练集测试集,并处理数据格式

i<-sample(n,n) #打乱样本编号,用于划分训练集测试集

#训练集取80%的样本
data_train<-as.matrix(iris[i[1:(0.8*n)],-(p+1)]) #训练集数据,需转为matrix类型
label_train<-as.numeric(iris[i[1:(0.8*n)],(p+1)]) #训练集标签,需转化为数组类型

#训练集取20%的样本
data_test<-as.matrix(iris[i[(0.8*n+1):n],-(p+1)]) #测试集数据,需转为matrix类型
label_test<-as.numeric(iris[i[(0.8*n+1):n],(p+1)]) #测试集标签,需转化为数组类型

#xgb需要转化格式
dtrain <- xgb.DMatrix(data = data_train, label = label_train)
dtest <- xgb.DMatrix(data = data_test, label =label_test)

调用xgboost函数进行训练和预测
iris数据有三类,故使用多类别的xgboost,objective参数为’multi:softmax’
(若是两分类问题则objective=‘binary:logistic’)

xgb <- xgboost(data = dtrain,max_depth=6, eta=0.5, objective='multi:softmax',num_class=k, nround=25)

#预测训练集
pre_train_xgb <- round(predict(xgb,newdata = dtrain))
error_trian<-1-sum(pre_train_xgb==label_train)/n/0.8 #训练集错判率

#预测测试集
pre_test_xgb <- round(predict(xgb,newdata = dtest))
error_test<-1-sum(pre_test_xgb==label_test)/n/0.2 #测试集错判率
  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值