Problema con get_params() en taller 2

Re: Problema con get_params() en taller 2

de Sara Silva -
Número de respuestas: 0
Buenas,

Estuve viendo... La verdad tenés un error bastante particular jaja, me costó encontrar por dónde iba. Voy a hacerte un spoiler por si no te interesa toda la explicación del código, pero igual abajo te explico con un poco más de profundidad. En definitiva tener metido un ColumnTransformer adentro de un Pipeline te va a dar problemas si querés hacer el exp.log_parameters(Pipeline.get_params()), si querés hacerlo igual tenés que loggear los parámetros a mano a comet. Para eso te creas un diccionario a mano como el que te da Pipeline.get_params() pero todo con strings y listo, sobre esto si tenés alguna duda preguntá mañana. Ahora paso a explicarte por qué pasa esto, la cuestión medio a alto nivel es la siguiente:

- Si te fijás en tu diccionario de get_params() tenés uno de los ejementos que tiene como key "vectorizador" y como value ColumnTransformer(transformers=[('limp', CountVectorizer(), 'review')]) (fijate que, importante, no lo guarda como string entre "" sino que como el objeto ColumnTransformer).

- Lo que pasa internamente en la función de Comet es que va a ir recorriendo cada uno de los elementos del diccionario de parámetros y se fija varias cosas sobre cada key y cada value. Entre ellas, se fija si el value es una lista, y para eso trata de iterar sobre él en algún momento. Es decir va a tratar de hacer value[0], value[1] ... etc. Esto en la mayoría de los casos, ya sea si el value es un string, un número... entre otras cosas, no es un problema para el código de Comet, lo maneja bien, simplemente avisa que no es una lista.

-De todas formas cuando ese value es el ColumnTransformer, tratar de hacer ColumnTransformer[0] para ver si es una lista da un tipo de error (ese KeyError que te da) que el código de Comet no está preparado para procesar y entonces en vez de simplemente avisar que no es una lista se rompe (podés probarlo vos misma, o sea hacer preprocesamiento[0] en tu código y ver que te da el mismo error).

Por ahí viene el asunto, yo mañana no voy a estar en clase, si te queda alguna duda preguntame por acá o después de turismo te puedo mostrar dónde se rompe, aunque quizás saber que esa combinación de elementos no va a funcionar ya te basta.

Saludos,
Sara