Je suis en un prédire sur une forme similaire à ce qui se trouve dans le guide de caret:comment déboguer des erreurs telles que: « dim (x) doit avoir une longueur positive » avec caret
predictions <- predict(caretfit, testing, type = "prob")
Mais je reçois l'erreur:
Error in apply(x, 1, paste, collapse = ",") :
dim(X) must have a positive length
Je voudrais savoir 1) la manière générale de diagnostiquer ces erreurs qui sont le résultat de mauvaises entrées en fonctions comme celle-ci ou 2) pourquoi mon code échoue.
1) Donc, en regardant l'erreur C'est quelque chose à voir avec 'X'. Quel argument est x? Evidemment le premier dans 'apply', mais quel argument dans predict est finalement passé pour s'appliquer? En regardant retraçage():
10: stop("dim(X) must have a positive length")
9: apply(x, 1, paste, collapse = ",")
8: paste(apply(x, 1, paste, collapse = ","), collapse = "\n")
7: makeDataFile(x = newdata, y = NULL)
6: predict.C5.0(modelFit, newdata, type = "prob")
5: predict(modelFit, newdata, type = "prob") at C5.0.R#59
4: method$prob(modelFit = modelFit, newdata = newdata, submodels = param)
3: probFunction(method = object$modelInfo, modelFit = object$finalModel,
newdata = newdata, preProc = object$preProcess)
2: predict.train(caretfit, testing, type = "prob")
1: predict(caretfit, testing, type = "prob")
Maintenant, ce problème serait facile à résoudre si je pouvais suivre le code à travers et comprendre le problème, par opposition à ces erreurs générales. Je peux tracer le code en utilisant cette traceback au code à C5.0.R # 59. (On dirait qu'il n'y a aucun moyen d'obtenir les numéros de ligne sur chaque trace?) Je peux suivre ce code pour autant que cette ligne 59 et (je pense) la fonction de prédire la ligne 44:
Mais après cela, je ne suis pas sûr d'où la logique coule. Je ne vois pas 'makeDataFile' n'importe où dans la source du caret ou, si c'est dans un autre paquet, comment il est arrivé là. J'ai également essayé le débogage Rstudio, debug() et browser(). Aucun ne fournit la pile de chemin que j'attendrais d'autres langues. Toute suggestion sur la façon de suivre le code lorsque vous ne savez pas ce que signifie une erreur msg?
2) En ce qui concerne mes entrées particulières, 'caretfit' est tout simplement le résultat d'un caret ajustement et les données de test est 3millions lignes par 59 colonnes:
fitcontrol <- trainControl(method = "repeatedcv",
number = 10,
repeats = 1,
classProbs = TRUE,
summaryFunction = custom.summary,
allowParallel = TRUE)
fml <- as.formula(paste("OUTVAR ~",paste(colnames(training[,1:(ncol(training)-2)]),collapse="+")))
caretfit <- train(fml,
data = training[1:200000,],
method = "C5.0",
trControl = fitcontrol,
verbose = FALSE,
na.action = na.pass)
Travaillez-vous avec RStudio? – Christoph
Je travaille avec nvim-r et vim. MAIS je suis prêt à travailler avec RStudio à des fins de débogage. En fait, j'ai essayé le débogage avec RStudio, le problème est que lorsque j'essaie de parcourir mon code, soit 1) arrive à une étape qui ne semble jamais achevée 2) je n'ai pas la source d'un fichier particulier et je reçois un erreur à cet effet (désolé ne peut pas se souvenir de l'erreur) – Joe
Si vous fournissez un exemple reproductible, je peux y jeter un oeil ... – Christoph