[R-es] Obtener una df a partir de una lista (o algo así)

Carlos Ortega co| @end|ng |rom qu@||tyexce||ence@e@
Vie Feb 5 09:33:58 CET 2021


Hola Manuel,

Otra alternativa que se me ocurre es que veas el problema de otra forma.

En vez de usar un caso del ejemplo de la función "xgboost()" en el que
efectivamente las variables de train/test ya tienen una estructura lista
para ser utilizados por xgboost, prueba a crear a partir de un data.frame
las variables de train y test.

Como referencia mira esto:

   -
   https://xgboost.readthedocs.io/en/latest/R-package/xgboostPresentation.html
   - Read the part about "Basic Training using XGBoost" / "Parameter
      variations"
   - O este otro ejemplo más completo:
   -
      https://www.analyticsvidhya.com/blog/2016/01/xgboost-algorithm-easy-steps/

Gracias,
Carlos Ortega
www.qualityexcellence.es

El vie, 5 feb 2021 a las 6:36, Carlos J. Gil Bellosta (<cgb using datanalytics.com>)
escribió:

> Hola, ¿qué tal?
>
> Por razones que no vienen al caso y a diferencia de muchos otros tipos de
> modelos tal como se implementan en R, xgboost admite como argumentos la X
> (data) y la Y (label) de tu problema por separado. Son dos objetos
> distintos. agaricus.train es una lista que contiene esos dos objetos (la X
> y la Y); de hecho, una lista es precisamente eso: una estructura que
> permite yuxtaponer otras.
>
> Los dos objetos son, el uno, la matriz agaricus.train$data ---puedes ver
> que se trata de una matriz "sparse" haciendo class(agaricus.train$data) o
> usar las funciones head, etc. para inspeccionarla--- y el otro es un vector
> de números (0 o 1), agaricus.train$label.
>
> Puedes convertir todo en un df tradicional haciendo algo así como
>
> datos <- data.frame(as.matrix(agaricus.train$data), label =
> agaricus.train$label)
>
> Dicho todo lo cual, creo que te vendría bien echarle un buen vistazo a los
> capítulos 2, 3 y 5 de esto <https://datanalytics.com/libro_r/> antes de
> meterte con XGBoost o sufrirás mucho.
>
> Un saludo,
>
> Carlos J. Gil Bellosta
> http://www.datanalytics.com
>
>
> El vie, 5 feb 2021 a las 6:11, Manuel Mendoza (<mmendoza using fulbrightmail.org
> >)
> escribió:
>
> > Buenos días, estoy tratando de implementar el código que veis abajo, de
> la
> > documentación del paquete xgboost. Me desconcierta que al cargar las
> bases
> > de datos aparezcan como listas. Cuando la llama directamente al aplicar
> la
> > función xgboost (data = train$data) me desconcierta todavía más. Entiendo
> > que se puede hacer así también, claro. Aunque no aparezca en el
> documento,
> > pretendo componer la df para trabajar desde ella (tal y como acostumbro a
> > hacer) pero, en mi infinita ignorancia, no lo consigo.
> > He probado cosas como:
> > df<-as.data.frame(train),
> > df<-as.data.frame(train$data)
> > y también con as.matrix, pero no funcionan.
> > Si alguien me dice cómo hacerlo (y de paso, por qué) se lo agradecería
> > mucho.
> >
> > library(xgboost)
> > data(agaricus.train, package='xgboost')
> > data(agaricus.test, package='xgboost')
> > train <- agaricus.train
> > test <- agaricus.test
> > bst <- xgboost(data = train$data, label = train$label, max_depth = 2,
> eta =
> > 1, nrounds = 2, objective = "binary:logistic")
> >
> > Gracias, como siempre,
> > Manuel
> >
> >         [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es using r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> R-help-es mailing list
> R-help-es using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>


-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es