R – XGBoost: 构建DMatrix时出错

我在R中使用XGBoost时遇到了问题。我正在读取一个包含数据的CSV文件:

get_data = function(){#加载数据path = "dados_eye.csv"data = read.csv(path)#分为两组train_porcentage = 0.05train_lines = nrow(data)*train_porcentagetrain = data[1:train_lines,]test = data[train_lines:nrow(data),]rownames(train) = c(1:nrow(train))rownames(test) = c(1:nrow(test))return (list("test" = test, "train" = train))}

这个函数在main.R中被调用

lista_dados = get_data()#machine = train_svm(lista_dados$train)#machine = train_rf(lista_dados$train)machine = train_xgt(lista_dados$train)

问题出在train_xgt函数中

train_xgt = function(train_data){data_train = data.frame(train_data[,1:14])label_train = data.frame(factor(train_data[,15]))print(is.data.frame(data_train))print(is.data.frame(label_train))dtrain = xgb.DMatrix(data_train, label=label_train)machine = xgboost(dtrain, num_class = 4 ,max.depth = 2,     eta = 1, nround = 2,nthread = 2,     objective = "binary:logistic")return (machine)    }

这是错误信息:

@ubuntu:~/Documents/EEG_DATA/Dados_Eye$ Rscript main.R

[1] TRUE

[1] TRUE

Error in xgb.DMatrix(data_train, label = label_train) :
xgb.DMatrix: does not support to construct from list Calls: train_xgt -> xgb.DMatrix Execution halted @ubuntu:~/Documents/EEG_DATA/Dados_Eye$

如您所见,它们都是数据框。

我不知道自己做错了什么,请帮助我!


回答:

只需先使用as.matrix()将数据框转换为矩阵,然后再传递给xgb.Dmatrix()即可。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注