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
> www.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
>> *https://mlr3book.mlr-org.com/list-learners.html
>> <https://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
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>
>
> --
> Saludos,
> Carlos Ortega
> www.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
# https://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
www.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
>> www.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
>>> *https://mlr3book.mlr-org.com/list-learners.html
>>> <https://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
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>
>>
>>
>> --
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>
--
Saludos,
Carlos Ortega
www.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
> # https://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
> www.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
>>> www.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
>>>> *https://mlr3book.mlr-org.com/list-learners.html
>>>> <https://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
>>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>>
>>>
>>>
>>> --
>>> Saludos,
>>> Carlos Ortega
>>> www.qualityexcellence.es
>>>
>>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
[[alternative HTML version deleted]]