问题 REAL()只能应用于'数字',而不能应用于'整数'


虽然问题似乎是重复的,但是我发布了这个问题,因为他们没有提供解决方案并且与我的问题相关。

dtrain<-xgb.DMatrix(data=data.matrix(train),label=data[t,c(31)])

xgb.DMatrix中的错误(data = data.matrix(train),label = data [t,c(31)]):   REAL()只能应用于'数字',而不能应用于'整数'

> class(data[t,c(31)])
[1] "integer"

> str(train)

data.frame':    1965 obs. of  30 variables:
 $ having_IP_Address          : int  2 2 2 2 2 2 2 2 2 2 ...
 $ URL_Length                 : int  3 3 3 3 3 3 3 3 3 3 ...
 $ Shortining_Service         : int  1 1 1 1 1 1 1 1 1 1 ...
 $ having_At_Symbol           : int  1 1 1 1 1 1 1 1 1 1 ...
 $ double_slash_redirecting   : int  2 2 2 2 2 2 2 2 2 2 ...
 $ Prefix_Suffix              : int  2 2 1 2 3 2 1 1 3 1 ...
 $ having_Sub_Domain          : int  1 2 1 1 1 3 1 2 1 1 ...
 $ SSLfinal_State             : int  2 2 2 1 2 2 1 2 2 2 ...
 $ Domain_registeration_length: int  3 1 3 2 2 1 2 3 2 1 ...
 $ Favicon                    : int  1 2 1 1 1 1 1 1 2 1 ...
 $ port                       : int  1 2 1 1 1 1 1 1 2 1 ...
 $ HTTPS_token                : int  2 2 2 2 2 2 2 2 2 2 ...
 $ Request_URL                : int  1 1 1 2 2 1 2 1 2 1 ...
 $ URL_of_Anchor              : int  2 2 2 2 2 3 1 2 3 1 ...
 $ Links_in_tags              : int  3 2 3 3 1 3 2 1 3 2 ...
 $ SFH                        : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Submitting_to_email        : int  2 1 2 2 2 2 2 1 1 2 ...
 $ Abnormal_URL               : int  2 2 2 2 2 2 2 2 2 2 ...
 $ Redirect                   : int  1 1 1 1 1 1 1 1 1 1 ...
 $ on_mouseover               : int  1 2 1 1 1 1 1 1 1 1 ...
 $ RightClick                 : int  1 1 1 1 1 1 1 1 1 1 ...
 $ popUpWidnow                : int  1 2 1 1 1 1 1 1 2 1 ...
 $ Iframe                     : int  1 2 1 1 1 1 1 1 2 1 ...
 $ age_of_domain              : int  3 1 1 1 3 3 1 1 1 1 ...
 $ DNSRecord                  : int  2 1 1 2 1 2 1 2 2 1 ...
 $ web_traffic                : int  3 3 2 3 3 3 1 3 2 2 ...
 $ Page_Rank                  : int  2 3 1 1 1 1 1 1 1 1 ...
 $ Google_Index               : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Links_pointing_to_page     : int  2 1 3 2 1 2 1 3 2 2 ...
 $ Statistical_report         : int  2 1 2 2 2 2 2 2 2 2 ...

我通过搜索此错误理解的是REAL()无法应用于列表。我无能为力这是什么()。 提前致谢!!


12823
2017-11-24 10:57


起源

您是否尝试将数据转换为数字,如错误所示 train[] <- lapply(train, as.numeric),然后使用 xgb.DMatrix(data=data.matrix(train)) - user20650


答案:


错误说明了这一点 xgb.DMatrix 取数值,其中数据是整数。

将数据转换为数字使用

train[] <- lapply(train, as.numeric)

然后使用

xgb.DMatrix(data=data.matrix(train))

11
2017-11-24 12:49



仅供参考:修复 github.com/dmlc/xgboost/pull/2237 允许直接使用整数矩阵作为xgb.DMatrix输入。 - Vadim Khotilovich


粗略地说REAL是一个用于访问C中R数字向量内容的C函数。


3
2017-11-24 11:29





X:预测变量的数据帧 Y:标签矢量

dtrain < - xgb.DMatrix(as.matrix(as.numeric(X)),Y)

要么: xgb < - xgboost(data = as.matrix(X),label = Y,...)


2
2017-11-03 15:27