R - XGBoost: Erreur de construction DMatrix
J'ai de la difficulté à l'aide de la XGBoost dans R.
Je suis de la lecture d'un fichier CSV avec mes données:
get_data = function()
{
#Loading Data
path = "dados_eye.csv"
data = read.csv(path)
#Dividing into two groups
train_porcentage = 0.05
train_lines = nrow(data)*train_porcentage
train = 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))
}
Cette fonction est Appelée de mon le principal.R
lista_dados = get_data()
#machine = train_svm(lista_dados$train)
#machine = train_rf(lista_dados$train)
machine = train_xgt(lista_dados$train)
Le problème est là dans la 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)
}
C'est l'Erreur:
becchi@ubuntu:~/Documents/EEG_DATA/Dados_Eye$ Rscript principal.R
[1] TRUE
[1] TRUE
Erreur dans xgb.DMatrix(data_train, label = label_train) :
xgb.DMatrix: il ne supporte pas de construire à partir de la liste d'Appels: train_xgt
-> xgb.DMatrix Exécution interrompue becchi@ubuntu:~/Documents/EEG_DATA/Dados_Eye$
Comme vous pouvez le voir, ils sont tous les deux DataFrames.
Je ne sais pas ce que je fais de mal, s'il vous plaît aider!
- si vous convertissez le
data.frame
d'entrée à l'aide dedata.matrix()
? xgboost ne peut pas aimer les données.cadre
Vous devez vous connecter pour publier un commentaire.
Il suffit de convertir le bloc de données de la matrice de la première utilisation de
as.matrix()
et ensuite passer àxgb.Dmatrix()
."Comme vous pouvez le voir, ils sont tous les deux DataFrames." -Gabriel Chaves Becchi
Une trame de données est une liste de vecteurs. Peut-être pour cela que vous voyez "liste".
De vérifier si toutes les colonnes de données numériques en eux - je pense que cela pourrait être parce que vous avez certains de la colonne qui contient des données stockées en tant que facteurs de caractères/de laquelle il ne sera pas en mesure de convertir une matrice. si vous avez du facteur de variables, vous pouvez utiliser un chaud codant pour les convertir en des variables nominales.