Tulmot / Sklearn-Multilabel

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

Probar la clase en spyder #24

Closed Tulmot closed 7 years ago

Tulmot commented 7 years ago

Probar la clase para ver que funciona correctamente

Tulmot commented 7 years ago

Después de corregir la clase iba a probar el método, pero cuando quiero instanciar la clase: dn=DisturbingNeigbors()

Me sale el siguiente error: TypeError: 'module' object is not callable

La clase la tengo metida en el mismo sitio donde esta BaggingClassifier es decir que importo de la siguiente manera: from sklearn.ensemble import DisturbingNeigbors

He estado mirando a ver si consigo corregirlo y creo que puede ser que el método init haga algo mal pero no veo el que, si me podeis echar una mano a ver si vosotros veis que puede ser.

En la carpeta de notebooks he subido el que estoy probando para que lo veais.

Un saludo.

alvarag commented 7 years ago

Luego en el despacho me lo descargo y lo echo un ojo. Supongo que es tema de cómo están los paquetes que has hecho, pero así de un primer vistazo no lo veo.

Un detalle, revisa la palabra neighbors (falta una "h").

alvarag commented 7 years ago

Prueba a hacer una carpeta (que será el paquete) y ahí creas un init.py como tiene la clase ensembles de scikit-learn.

https://github.com/scikit-learn/scikit-learn/blob/ef5cb84a805efbe4bb06516670a9b8c690992bd7/sklearn/ensemble/__init__.py

Echa un ojo a la documentación de aquí: http://pythoncentral.io/how-to-create-a-python-package/

Tulmot commented 7 years ago

A ver el problema que he visto es que a el le deja instanciar las clases que tiene dentro de bagging, es decir la clase bagging tampoco deja instanciarla, entonces nose si editar el bagging e introducir alli la clase hecha por mi.

Tulmot commented 7 years ago

He subido el init.py que he creado dentro de la carpeta donde también esta el disturbing_neighbors.

Tulmot commented 7 years ago

He subido un archivo python(.py) llamado Prueba_clase al inicio, que hecho en spyder me sale error al pasarle la semilla a la clase

TypeError: init() got an unexpected keyword argument 'random_state'

pero he estado mirando y el init de la clase pienso que es correcto no se si vosotros vereis algo que yo no veo

alvarag commented 7 years ago

La clase que tienes subida a Github realmente no tiene en el constructor random_state... ¿no has subido la última versión?

def __init__(self,
                 base_estimator=DecisionTreeClassifier,
                 n_neighbors=10,
                 n_features=0.5):
        self.base_estimator =base_estimator 
        self.n_neighbors=n_neighbors
        self.n_features=n_features
        self.rnd_dimensions
self.rnd_neighbors
Tulmot commented 7 years ago

Perdón por tardar en contestar, si que esta actualizado, es la clase que esta en sklearn/disturbing_neighbors/disturbing_neighbors.py `def init(self,

             base_estimator=DecisionTreeClassifier,
             n_neighbors=10,
             n_features=0.5,
             random_state=None):
    self.base_estimator =base_estimator 
    self.n_neighbors=n_neighbors
    self.n_features=n_features
    self.random_state=random_state
    self.rnd_dimensions
    self.rnd_neighbors`

la que esta en el inicio es la antigua, la borro? era por tener los commits y las antiguas versiones

alvarag commented 7 years ago

Lo normal es mover la clase que tenías previamente en un directorio, al paquete: de este modo no pierdes ningún commit. Lo que no podemos dejar es la misma clase en dos sitios distintos.

alvarag commented 7 years ago

¿Por qué has metido todos los fuentes de scikit-learn en tu repositorio? No entiendo muy bien qué estas haciendo.

Yo lo que haría es:

Estas dos líneas en el constructor no deberían estar así, o le asignas un valor (none, por ejemplo), o lo quitas y ya se definirán automáticamente cuando lo utilices en la propia clase más abajo:

        self.rnd_dimensions
        self.rnd_neighbors

Una vez tengas esto funcionando, igual lo más fácil es renombrar tu carpeta sklearn a sklearn-ubu

Tulmot commented 7 years ago

Funciona correctamente