全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
12018 16
2017-01-18
我是要用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

二维码

扫码加我 拉你入群

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

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

全部回复
2017-1-18 12:41:52
建议你好好看看文档。 花点时间看文档没坏处。
我印象里, xgb是不支持 公式的。 label是个一列矩阵。  而且不支持dataframe。
二维码

扫码加我 拉你入群

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

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

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
二维码

扫码加我 拉你入群

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

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

2017-1-18 22:59:32
label =y  注意拼写。。。。。。
如果traindata, y都是矩阵,应该没问题了
二维码

扫码加我 拉你入群

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

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

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原创者论文,从楼主参数设制,可见,可能还没读过相关文献。。
二维码

扫码加我 拉你入群

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

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

2017-1-18 23:05:20
data(agaricus.train, package='xgboost')
data(agaricus.test, package='xgboost')
train <- agaricus.train
test <- agaricus.test
就是获取两个数据集,一个训练集,一个测试集, 你仔细看看两个数据集的结构,应该训练集多一列。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群