楼主: yaoqsm321
10957 16

[问答] 关于xgboost的问题,希望牛人帮我看下,自己实在找不到原因了 [推广有奖]

  • 1关注
  • 0粉丝

本科生

28%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
873 点
帖子
81
精华
0
在线时间
70 小时
注册时间
2015-5-28
最后登录
2017-9-7

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我是要用xgboost做分类预测,我把代码写在下边,然后代码运行的时候总出现错误,不知道是什么原因,好像是lable这个参数设置的不对,求大家帮我看下,真心感谢!

radata <- read.csv("E://ding//1012.csv",header=T)
ind <- sample(2, nrow(radata), replace=TRUE, prob=c(0.9, 0.1))
traindata <- radata[ind==1,]
testdata<- radata[ind==2,]

tdata<- as.matrix(traindata)

library(xgboost)

bst <- xgboost(id~a+b+c+g+h+i+j+k+l+n+q+r+s+t+v+w+x+y+z+aa+ab+ac+ad+ae+af+ah+ak+al+as,data = traindata,lable=traindata$id,max.depth = 2, eta = 1,
                                nround = 2, objective = "binary:logistic")


出现的错误信息是:
Error in xgb.setinfo(dmat, names(p), p[[1]]) :
  The length of labels must equal to the number of rows in the input data

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:boost 牛人帮 是什么原因 lable 参数设置 R语言 xgboost

沙发
jameschin007 发表于 2017-1-18 12:41:52 |只看作者 |坛友微信交流群
建议你好好看看文档。 花点时间看文档没坏处。
我印象里, xgb是不支持 公式的。 label是个一列矩阵。  而且不支持dataframe。

使用道具

藤椅
yaoqsm321 发表于 2017-1-18 14:27:51 |只看作者 |坛友微信交流群
jameschin007 发表于 2017-1-18 12:41
建议你好好看看文档。 花点时间看文档没坏处。
我印象里, xgb是不支持 公式的。 label是个一列矩阵。  而 ...
那个help已经看了,也看了例子,但例子中的这两句没看懂

data(agaricus.train, package='xgboost')
data(agaricus.test, package='xgboost')
train <- agaricus.train
test <- agaricus.test


我把公式删了,结果还是有错误
> bst <- xgboost(data = traindata,lable=y,max.depth = 2, eta = 1,
+                                 nrounds = 2, objective = "binary:logistic")
Error in xgb.get.DMatrix(data, label) : xgboost: Invalid input of data

使用道具

板凳
jameschin007 发表于 2017-1-18 22:59:32 |只看作者 |坛友微信交流群
label =y  注意拼写。。。。。。
如果traindata, y都是矩阵,应该没问题了

使用道具

报纸
jgchen1966 发表于 2017-1-18 23:00:47 |只看作者 |坛友微信交流群
一、注意xgboost 中对 data 的要求:
       data      takes matrix, dgCMatrix, local data file or xgb.DMatrix
二、agaricus.train 是一个list :
    str(agaricus.train)
List of 2
$ data :Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
  .. ..@ i       : int [1:143286] 2 6 8 11 18 20 21 24 28 32 ...
  .. ..@ p       : int [1:127] 0 369 372 3306 5845 6489 6513 8380 8384 10991 ...
  .. ..@ Dim     : int [1:2] 6513 126
  .. ..@ Dimnames:List of 2
  .. .. ..$ : NULL
  .. .. ..$ : chr [1:126] "cap-shape=bell" "cap-shape=conical" "cap-shape=convex" "cap-shape=flat" ...
  .. ..@ x       : num [1:143286] 1 1 1 1 1 1 1 1 1 1 ...
  .. ..@ factors : list()
$ label: num [1:6513] 1 0 0 1 0 0 0 1 0 0 ...
三、正确格式是:
  bstSparse <- xgboost(data = agaricus.train$data, label = agaricus.train$label,
        max.depth = 6, eta =0.001, nthread = 3, nround = 6999,
         objective = "binary:logistic",verbose=2)
四、xgboost 自带分布式的数据集定义格式,xgb.DMatrix ,相当有效地处理大型数据集!!!
五,想有效地评估xgboost ,用xgb.train较好些
六,想用好xgboost ,最好想学习gbm及其gbm原创者论文,从楼主参数设制,可见,可能还没读过相关文献。。

使用道具

地板
jameschin007 发表于 2017-1-18 23:05:20 |只看作者 |坛友微信交流群
data(agaricus.train, package='xgboost')
data(agaricus.test, package='xgboost')
train <- agaricus.train
test <- agaricus.test
就是获取两个数据集,一个训练集,一个测试集, 你仔细看看两个数据集的结构,应该训练集多一列。

使用道具

7
yaoqsm321 发表于 2017-1-19 09:49:36 |只看作者 |坛友微信交流群
jgchen1966 发表于 2017-1-18 23:00
一、注意xgboost 中对 data 的要求:
       data      takes matrix, dgCMatrix, local data file or xgb ...
确实没读过,gbm的代码也是错误一大堆,这两天刚开始学gbm和xgboost,有很多问题,自己确不知道怎么解决,也不知道要看什么书,不知道您有什么建议吗

使用道具

8
yaoqsm321 发表于 2017-1-19 09:56:23 |只看作者 |坛友微信交流群
jameschin007 发表于 2017-1-18 22:59
label =y  注意拼写。。。。。。
如果traindata, y都是矩阵,应该没问题了
他的错误提示是:无效的输入数据。我就觉得应该是要把traindata和y都设置为矩阵,但是我不知道该怎么转换

使用道具

9
yaoqsm321 发表于 2017-1-19 10:13:52 |只看作者 |坛友微信交流群
貌似运行出来了,请两位大牛看下,我这个对不对呀


> radata <- read.csv("E://ding//1012.csv",header=T)
> ind <- sample(2, nrow(radata), replace=TRUE, prob=c(0.9, 0.1))
> traindata <- radata[ind==1,]
> testdata<- radata[ind==2,]
>
> tdata<- as.matrix(traindata)
> y<- as.matrix(traindata$id)
> library(xgboost)
>
> bst <- xgboost(data = tdata,label = y,max.depth = 2, eta = 1,
+                                 nrounds = 2, objective = "binary:logistic")
[0]        train-error:0.000000
[1]        train-error:0.000000

使用道具

10
yaoqsm321 发表于 2017-1-19 10:15:25 |只看作者 |坛友微信交流群
yaoqsm321 发表于 2017-1-19 10:13
貌似运行出来了,请两位大牛看下,我这个对不对呀
1两位帮忙看下哈

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-6-3 06:34