Tulmot / Sklearn-Multilabel

Ensembles de clasificadores Multi-Label en Scikit-Learn
2 stars 0 forks source link

Árbol random oracles #116

Closed Tulmot closed 6 years ago

Tulmot commented 6 years ago

Cuando intento dibujar el árbol del BaseRandomOracle me sale el siguiente error: AttributeError: 'NoneType' object has no attribute 'children_left'

He estado mirando por internet y nose muy bien donde buscar donde puede estar el fallo en mi código.

Creo que es porque tengo dos clasificadores, entonces tendre que dibujar uno o otro.

jjrodriguez commented 6 years ago

Lo que dice es que algo del tipo "NoneType" no tiene un atributo que se llama "children_left". Normal que None no tenga atributos. Parece que la variable con la que estás llamando al método del dibujo del árbol no tiene un árbol sino que está a None. Imprime esa variable antes de llamar al método, para ver si es o no None.

Tulmot commented 6 years ago

Esto tiene la variable que le paso al método para dibujar el árbol: imagen

Así que lo que yo le paso a None no esta..

alvarag commented 6 years ago

Pero ese base_estimator no está entrenado. Tu en Random Oracles tienes tantos árboles como "oráculos" tengas: cada uno de esos árboles son copia del base_estimator y entrenado con el subconjunto de instancias más cercanas.

Tulmot commented 6 years ago

Una pequeña duda estaba haciendo la condición para cuando es BaseRandomOracle o otro clasificador

if(classifier==BaseRandomOracles):
    dot_data = export_graphviz(classifier._classifiers_train[0], out_file=None)
else:
    dot_data = export_graphviz(classifier.base_estimator, out_file=None)
graph = graphviz.Source(dot_data)
graph

Y nose como hacer la condición, ya que no se como saber que clasificador base estoy usando...se me habia ocurrido crear una variable booleana para cuando asigno el clasificador sea True si es BaseRandomOracle o False si es otro aunque supongo que habra alguna manera mejor...

jjrodriguez commented 6 years ago

Mira a ver si lo puedes hacer con la función isinstance.

Tulmot commented 6 years ago

Me funciona correctamente gracias.