Closed ignacioarteaga99 closed 2 years ago
Hola, primero que todo el método fit trabaja bien con matrices y vectores (arrays 2d y 1d, respectivamente), así que si le estas pasando pandas.DataFrame's intenta convertirlos a arrays.
Por otra parte, siendo ya un array de numpy. Estos tienen el método .reshape()
para modificar cómo se distribuyen las dimensiones.
Por último, se supone que cada texto va a ser convertido en un vector n-dimensional (por lo que entiendo en tu caso n=300). Y este vector va a tener asociado un label numérico (1d). Y esto se repetite para cada noticia que uses. Entonces deberías estar trabajando con una matriz de (n_noticias)×(dimensión_de_vector) y un vector de (n_noticias).
No sé si esto responde tu pregunta
No entiendo muy bien cómo usar el reshape, al hacer lo siguiente: lista_vectores[1].reshape(1,1)
Me tira el siguiente error:
ValueError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_2932/3363269672.py in
ValueError: cannot reshape array of size 300 into shape (1,1)
Tal como decía Pavel, no es necesario que lo conviertas a un dataframe, ya que realmente el verlo de forma tabular no te va a aportar nada más, porque la interpretación es compleja. Respecto al tamaño del vector, hay que tener cuidado con una cosa: no es lo mismo reducir el tamaño del vector de spaCy modificando la codificación; a redimensionar un arreglo cualquiera.
Cambiar la dimensión de un vector de spaCy implica aumentar/reducir las dimensiones del vector doc2vec del texto, lo que permitiría tener más/menos información de su contenido a cambio de un costo computacional. Por otra parte, redimensionar un vector de numpy no te permitiría pasar de un vector de 300 columnas a uno de 100.
El método reshape
de numpy se usa para cambiar la distribución del contenido de un vector, como pasar de un vector fila a un vector columna, o de un vector cualquiera a una matriz. Dicho esto, son cosas diferentes e intuyo que, en tu caso, ninguna de las 2 opciones es realmente lo que necesitas. Probablemente, te bastaría con guardar los vectores en un arreglo y ya tendrías tu dataset :)
Hola! Tengo el mismo error: TypeError: only size-1 arrays can be converted to Python scalars
Estoy buscando cómo solucionarlo, pero la verdad no encuentro mucho y por lo que comprendo, el error nace de que le estamos pasando un vector y no un solo número, pero eso es lo que sale en las instrucciones de la tarea, o me equivoco?
Hola! Tengo el mismo error: TypeError: only size-1 arrays can be converted to Python scalars
Estoy buscando cómo solucionarlo, pero la verdad no encuentro mucho y por lo que comprendo, el error nace de que le estamos pasando un vector y no un solo número, pero eso es lo que sale en las instrucciones de la tarea, o me equivoco?
Probablemente estén cometiendo algún error en el dataset que están creando. Cuando se usa el método fit
de los modelos de sklearn, le pasas X e Y. Tu X debería ser un arreglo con varios vectores de spaCy, correspondientes a tus textos procesados y codificados.
Hola, en la actividad 4 de la parte 2 estoy intentando entrenar mi clasificador SVM con los datos del data frame , pero me tira el siguiente error al intentar hacer el fit:
ValueError: setting an array element with a sequence.
Entiendo que esto puede deberse a que el vector (que ocupa cada "casilla" de la columna a trabajar) puede tener dimensiones que no son manejables por el modelo. ¿Estoy bien o me equivoco en esto último? De hecho el error dice:
TypeError Traceback (most recent call last) TypeError: only size-1 arrays can be converted to Python scalars
The above exception was the direct cause of the following exception:
ValueError Traceback (most recent call last)
Estoy tratando de ver cómo hacer un resize de estos vectores para que pasen de 300 a 1 y pueda trabajar con ellos, pero no encuentro referencias ni documentación que me lo permita. Si tienen algún link a explorar feliz que me ayuden en ese sentido. Tampoco sé si estoy abordando bien este problema. Gracias!