Diego Martín
2020-Jan-04 12:46 UTC
[R-es] A modern object-oriented machine learning framework in R
Estimadísimo Carlos: Muchísimas gracias por responderme y hacerlo tan rápido. Contemplé esa posibilidad, es decir, que el hiperparámetro estuviera suponiendo un problema, y probé de esta forma:> learner <- lrn("classif.ranger", num.trees = 5, mtry = NULL)Error: Element with key 'classif.ranger' not found in DictionaryLearner! Pero obtuve el mismo error. Como muestro. Reconozco el error de imprecisión al plantear la duda, por no poner esta experiencia. Este resultado, por decirlo de alguna manera, me mueve a pensar que el problema está en el reposititorio de la librería mlr3, al buscar la técnica de clasificación. No sé si hay algo más que no he hecho, además de cargar las librerías que entiendo deben estar, es decir: library(ranger) library(mlr3) Agradeceré cualquier comentario que me hagáis. Gracias Carlos. Diego Martín-Oliva. Geógrafo. PS. Hoja del libro sobre mlr3, donde estuve buscando los *Learners* integrados en el paquete. El vie., 3 ene. 2020 a las 23:42, Carlos Ortega (<cof en qualityexcellence.es>) escribió:> Hola Diego, > > El problema que estás teniendo es por el hiperparámetro "cp" que has usado. > > Ese hiperparámetro es propio del algoritmo de árbol de decisión "rpart", > pero no de "ranger". > Mira los hiperparámetros propios de "ranger" y prueba con uno de ellos > (por ejemplo n.trees o también mtry). > > De igual forma, tienes el mismo problema usando xgboost que tampoco tiene > "cp" como hiperparámetro. > > Saludos, > Carlos Ortega > qualityexcellence.es > > El vie., 3 ene. 2020 a las 20:00, Diego Martín (<ako.sistemas en gmail.com>) > escribió: > >> Estimados amigos: >> >> Esta tarde he estado probando la librería >> mlr3, que me resulta muy interesante para trabajos de clasificación. En >> concreto, para entender su funcionamiento he probado un ejemplo simple >> (viene en CRAN). Sin embargo, cuando cambio el parámetro de clasifiación >> en >> la función de aprendizaje, me aparece el error siguiente: >> >> >> *Error: Element with key 'classif.ranger' not found in DictionaryLearner!* >> >> La situación es la siguiente: >> >> library(ranger) >> library(mlr3) >> task_iris <- TaskClassif$new(id = "iris", >> backend = iris, >> target = "Species", >> positive = NULL) >> # learner <- lrn("classif.rpart", cp = 0.01) >> learner <- lrn("classif.ranger", cp = 0.01) >> >> De forma que, no entiende, no halla, >> "classif.ranger". Lo cual no ocurre con "classif.rpart". Si bien es el que >> usa en el ejemplo de CRAN. No veo dónde está el problema. La librería >> "ranger" carga perfectamente, he consultado >> *mlr3book.mlr-org.com/list-learners.html >> <mlr3book.mlr-org.com/list-learners.html>*, y es una de las >> posibilidades. >> >> La ayuda de lrn(), con la que cuento cuando >> hago help("lrn"), en mi opinión no es precisa, y no se trata de que esté >> en >> inglés, se trata de que no va al grano y, de modo muy genéricio, habla del >> aprendizaje en esta librería. >> >> No corresponde, pero por curiosidad he >> empleado >> también la opción "classif.xgboost", y obtengo el mismo error. No me >> digan, >> por favor, que xgboost, no sirve para variables categóricas, lo sé, se >> trata solo de una prueba para ver si esa sí la encontraba en el directorio >> de la librería. >> >> Por adelantado agradezco a todos su atención a >> mi duda y, por supuesto, la dedicación que le otorguen. >> >> Gracias. >> Diego Martín-Oliva. >> Geógrafo. >> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> stat.ethz.ch/mailman/listinfo/r-help-es >> > > > -- > Saludos, > Carlos Ortega > qualityexcellence.es >[[alternative HTML version deleted]]
Carlos Ortega
2020-Jan-04 13:17 UTC
[R-es] A modern object-oriented machine learning framework in R
Hola Diego, Ya, la nueva versión de "mlr" es mucho más modular que la versión anterior. Y para poder usar los diferentes algoritmos ("learners") hay que cargar la librería "mlr3learners" que no se invoca por defecto cuando usas "mlr3". Mira este ejemplo reproducible que adjunto, antes de cargar la librería (mlr3learners) y probar con "ranger" tuve el mismo mensaje de error que has obtenido. Es interesante mirar también la página donde están todos los algoritmos que están contemplados ahora mismo. #-------------------------------------------------------- #---------------------------------- #------- RANGER # Load available learners # mlr3learners.mlr-org.com library(mlr3learners) learner = mlr3::lrn("classif.ranger") print(learner) # available parameters: learner$param_set$ids() # create learning task task_iris = TaskClassif$new(id = "iris", backend = iris, target = "Species") task_iris # load learner and set hyperparamter learner = lrn("classif.ranger", num.trees = 100) # train/test split train_set = sample(task_iris$nrow, 0.8 * task_iris$nrow) test_set = setdiff(seq_len(task_iris$nrow), train_set) # train the model learner$train(task_iris, row_ids = train_set) # predict data prediction = learner$predict(task_iris, row_ids = test_set) # calculate performance prediction$confusion measure = msr("classif.acc") prediction$score(measure) #-------------------------------------------------------- Gracias, Carlos Ortega qualityexcellence.es El sáb., 4 ene. 2020 a las 13:46, Diego Martín (<ako.sistemas en gmail.com>) escribió:> Estimadísimo Carlos: > > Muchísimas gracias por responderme y > hacerlo tan rápido. Contemplé esa posibilidad, es decir, que el > hiperparámetro estuviera suponiendo un problema, y probé de esta forma: > > > learner <- lrn("classif.ranger", num.trees = 5, mtry = NULL) > > Error: Element with key 'classif.ranger' not found in DictionaryLearner! > > Pero obtuve el mismo error. Como muestro. > Reconozco el error de imprecisión al plantear la duda, por no poner esta > experiencia. Este resultado, por decirlo de alguna manera, me mueve a > pensar que el problema está en el reposititorio de la librería mlr3, al > buscar la técnica de clasificación. > > No sé si hay algo más que no he hecho, > además de cargar las librerías que entiendo deben estar, es decir: > library(ranger) > library(mlr3) > > Agradeceré cualquier comentario que me > hagáis. Gracias Carlos. > > Diego Martín-Oliva. > Geógrafo. > > PS. Hoja del libro sobre mlr3, donde estuve buscando los *Learners* > integrados en el paquete. > > > El vie., 3 ene. 2020 a las 23:42, Carlos Ortega (<cof en qualityexcellence.es>) > escribió: > >> Hola Diego, >> >> El problema que estás teniendo es por el hiperparámetro "cp" que has >> usado. >> >> Ese hiperparámetro es propio del algoritmo de árbol de decisión "rpart", >> pero no de "ranger". >> Mira los hiperparámetros propios de "ranger" y prueba con uno de ellos >> (por ejemplo n.trees o también mtry). >> >> De igual forma, tienes el mismo problema usando xgboost que tampoco tiene >> "cp" como hiperparámetro. >> >> Saludos, >> Carlos Ortega >> qualityexcellence.es >> >> El vie., 3 ene. 2020 a las 20:00, Diego Martín (<ako.sistemas en gmail.com>) >> escribió: >> >>> Estimados amigos: >>> >>> Esta tarde he estado probando la librería >>> mlr3, que me resulta muy interesante para trabajos de clasificación. En >>> concreto, para entender su funcionamiento he probado un ejemplo simple >>> (viene en CRAN). Sin embargo, cuando cambio el parámetro de clasifiación >>> en >>> la función de aprendizaje, me aparece el error siguiente: >>> >>> >>> *Error: Element with key 'classif.ranger' not found in >>> DictionaryLearner!* >>> >>> La situación es la siguiente: >>> >>> library(ranger) >>> library(mlr3) >>> task_iris <- TaskClassif$new(id = "iris", >>> backend = iris, >>> target = "Species", >>> positive = NULL) >>> # learner <- lrn("classif.rpart", cp = 0.01) >>> learner <- lrn("classif.ranger", cp = 0.01) >>> >>> De forma que, no entiende, no halla, >>> "classif.ranger". Lo cual no ocurre con "classif.rpart". Si bien es el >>> que >>> usa en el ejemplo de CRAN. No veo dónde está el problema. La librería >>> "ranger" carga perfectamente, he consultado >>> *mlr3book.mlr-org.com/list-learners.html >>> <mlr3book.mlr-org.com/list-learners.html>*, y es una de las >>> posibilidades. >>> >>> La ayuda de lrn(), con la que cuento cuando >>> hago help("lrn"), en mi opinión no es precisa, y no se trata de que esté >>> en >>> inglés, se trata de que no va al grano y, de modo muy genéricio, habla >>> del >>> aprendizaje en esta librería. >>> >>> No corresponde, pero por curiosidad he >>> empleado >>> también la opción "classif.xgboost", y obtengo el mismo error. No me >>> digan, >>> por favor, que xgboost, no sirve para variables categóricas, lo sé, se >>> trata solo de una prueba para ver si esa sí la encontraba en el >>> directorio >>> de la librería. >>> >>> Por adelantado agradezco a todos su atención a >>> mi duda y, por supuesto, la dedicación que le otorguen. >>> >>> Gracias. >>> Diego Martín-Oliva. >>> Geógrafo. >>> >>> [[alternative HTML version deleted]] >>> >>> _______________________________________________ >>> R-help-es mailing list >>> R-help-es en r-project.org >>> stat.ethz.ch/mailman/listinfo/r-help-es >>> >> >> >> -- >> Saludos, >> Carlos Ortega >> qualityexcellence.es >> >-- Saludos, Carlos Ortega qualityexcellence.es [[alternative HTML version deleted]]
Diego Martín
2020-Jan-04 16:54 UTC
[R-es] A modern object-oriented machine learning framework in R
Querido amigo Carlos: Muchísimas gracias. Efectivamente, ahí estaba la clave. ¡Qué simple me siento!. Afortunadamente me has orientado y ahí está. Sin menospreciar tu ejemplo, por supuesto. Solo he instalado y cargado la librería mlr3learners y corrido mi ejemplo con el método classif.ranger, sin más problemas. No entrando a valorar los resultados, puedo decir que todo ha funcionado perfectamente. Luego, era eso, la librearía. Ahora voy a estudiar un poco todo esto, me parece muy interesante estoy haciendo incursiones de R en SIG (qgis, para ser más exacto) y tengo en mente un tema de clasificación para el que creo que usar mlr3 (en este caso le vendría muy bien). Un abrazo muy fuerte y nuevamente gracias. Diego Martín-Oliva. Geógrafo. El sáb., 4 ene. 2020 a las 14:17, Carlos Ortega (<cof en qualityexcellence.es>) escribió:> Hola Diego, > > Ya, la nueva versión de "mlr" es mucho más modular que la versión anterior. > Y para poder usar los diferentes algoritmos ("learners") hay que cargar la > librería "mlr3learners" que no se invoca por defecto cuando usas "mlr3". > > Mira este ejemplo reproducible que adjunto, antes de cargar la librería > (mlr3learners) y probar con "ranger" tuve el mismo mensaje de error que has > obtenido. > Es interesante mirar también la página donde están todos los algoritmos > que están contemplados ahora mismo. > > #-------------------------------------------------------- > #---------------------------------- > #------- RANGER > # Load available learners > # mlr3learners.mlr-org.com > library(mlr3learners) > > learner = mlr3::lrn("classif.ranger") > print(learner) > # available parameters: > learner$param_set$ids() > > # create learning task > task_iris = TaskClassif$new(id = "iris", backend = iris, target > "Species") > task_iris > > # load learner and set hyperparamter > learner = lrn("classif.ranger", num.trees = 100) > > # train/test split > train_set = sample(task_iris$nrow, 0.8 * task_iris$nrow) > test_set = setdiff(seq_len(task_iris$nrow), train_set) > > # train the model > learner$train(task_iris, row_ids = train_set) > > # predict data > prediction = learner$predict(task_iris, row_ids = test_set) > > # calculate performance > prediction$confusion > > measure = msr("classif.acc") > prediction$score(measure) > #-------------------------------------------------------- > > > > > Gracias, > Carlos Ortega > qualityexcellence.es > > El sáb., 4 ene. 2020 a las 13:46, Diego Martín (<ako.sistemas en gmail.com>) > escribió: > >> Estimadísimo Carlos: >> >> Muchísimas gracias por responderme y >> hacerlo tan rápido. Contemplé esa posibilidad, es decir, que el >> hiperparámetro estuviera suponiendo un problema, y probé de esta forma: >> >> > learner <- lrn("classif.ranger", num.trees = 5, mtry = NULL) >> >> Error: Element with key 'classif.ranger' not found in DictionaryLearner! >> >> Pero obtuve el mismo error. Como muestro. >> Reconozco el error de imprecisión al plantear la duda, por no poner esta >> experiencia. Este resultado, por decirlo de alguna manera, me mueve a >> pensar que el problema está en el reposititorio de la librería mlr3, al >> buscar la técnica de clasificación. >> >> No sé si hay algo más que no he hecho, >> además de cargar las librerías que entiendo deben estar, es decir: >> library(ranger) >> library(mlr3) >> >> Agradeceré cualquier comentario que me >> hagáis. Gracias Carlos. >> >> Diego Martín-Oliva. >> Geógrafo. >> >> PS. Hoja del libro sobre mlr3, donde estuve buscando los *Learners* >> integrados en el paquete. >> >> >> El vie., 3 ene. 2020 a las 23:42, Carlos Ortega (< >> cof en qualityexcellence.es>) escribió: >> >>> Hola Diego, >>> >>> El problema que estás teniendo es por el hiperparámetro "cp" que has >>> usado. >>> >>> Ese hiperparámetro es propio del algoritmo de árbol de decisión "rpart", >>> pero no de "ranger". >>> Mira los hiperparámetros propios de "ranger" y prueba con uno de ellos >>> (por ejemplo n.trees o también mtry). >>> >>> De igual forma, tienes el mismo problema usando xgboost que tampoco >>> tiene "cp" como hiperparámetro. >>> >>> Saludos, >>> Carlos Ortega >>> qualityexcellence.es >>> >>> El vie., 3 ene. 2020 a las 20:00, Diego Martín (<ako.sistemas en gmail.com>) >>> escribió: >>> >>>> Estimados amigos: >>>> >>>> Esta tarde he estado probando la librería >>>> mlr3, que me resulta muy interesante para trabajos de clasificación. En >>>> concreto, para entender su funcionamiento he probado un ejemplo simple >>>> (viene en CRAN). Sin embargo, cuando cambio el parámetro de >>>> clasifiación en >>>> la función de aprendizaje, me aparece el error siguiente: >>>> >>>> >>>> *Error: Element with key 'classif.ranger' not found in >>>> DictionaryLearner!* >>>> >>>> La situación es la siguiente: >>>> >>>> library(ranger) >>>> library(mlr3) >>>> task_iris <- TaskClassif$new(id = "iris", >>>> backend = iris, >>>> target = "Species", >>>> positive = NULL) >>>> # learner <- lrn("classif.rpart", cp = 0.01) >>>> learner <- lrn("classif.ranger", cp = 0.01) >>>> >>>> De forma que, no entiende, no halla, >>>> "classif.ranger". Lo cual no ocurre con "classif.rpart". Si bien es el >>>> que >>>> usa en el ejemplo de CRAN. No veo dónde está el problema. La librería >>>> "ranger" carga perfectamente, he consultado >>>> *mlr3book.mlr-org.com/list-learners.html >>>> <mlr3book.mlr-org.com/list-learners.html>*, y es una de las >>>> posibilidades. >>>> >>>> La ayuda de lrn(), con la que cuento cuando >>>> hago help("lrn"), en mi opinión no es precisa, y no se trata de que >>>> esté en >>>> inglés, se trata de que no va al grano y, de modo muy genéricio, habla >>>> del >>>> aprendizaje en esta librería. >>>> >>>> No corresponde, pero por curiosidad he >>>> empleado >>>> también la opción "classif.xgboost", y obtengo el mismo error. No me >>>> digan, >>>> por favor, que xgboost, no sirve para variables categóricas, lo sé, se >>>> trata solo de una prueba para ver si esa sí la encontraba en el >>>> directorio >>>> de la librería. >>>> >>>> Por adelantado agradezco a todos su atención >>>> a >>>> mi duda y, por supuesto, la dedicación que le otorguen. >>>> >>>> Gracias. >>>> Diego Martín-Oliva. >>>> Geógrafo. >>>> >>>> [[alternative HTML version deleted]] >>>> >>>> _______________________________________________ >>>> R-help-es mailing list >>>> R-help-es en r-project.org >>>> stat.ethz.ch/mailman/listinfo/r-help-es >>>> >>> >>> >>> -- >>> Saludos, >>> Carlos Ortega >>> qualityexcellence.es >>> >> > > -- > Saludos, > Carlos Ortega > qualityexcellence.es >[[alternative HTML version deleted]]