Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problema com a dimensão dos arrays

Olá, estava desenvolvendo um algoritmo que classificasse frases em negativa e afirmativa a partir de uma base de dados. Tudo corria bem até que me deparei com o seguinte erro:

ValueError                                Traceback (most recent call last)
<ipython-input-58-8eaa1ece0b02> in <module>
     13 le.fit(treino_x)
     14 le.fit(treino_y)
---> 15 le.fit(teste_x)
     16 le.fit(teste_y)
     17 

c:\python38\lib\site-packages\sklearn\preprocessing\_label.py in fit(self, y)
    237         self : returns an instance of self.
    238         """
--> 239         y = column_or_1d(y, warn=True)
    240         self.classes_ = _encode(y)
    241         return self

c:\python38\lib\site-packages\sklearn\utils\validation.py in inner_f(*args, **kwargs)
     70                           FutureWarning)
     71         kwargs.update({k: arg for k, arg in zip(sig.parameters, args)})
---> 72         return f(**kwargs)
     73     return inner_f
     74 

c:\python38\lib\site-packages\sklearn\utils\validation.py in column_or_1d(y, warn)
    843         return np.ravel(y)
    844 
--> 845     raise ValueError(
    846         "y should be a 1d array, "
    847         "got an array of shape {} instead.".format(shape))

ValueError: y should be a 1d array, got an array of shape (5, 2) instead.

Busquei soluções na web e descobri a classe LabelEncoder(), para padronizar o enconding da base de dados, e o método reshape. Tentei aplicá-los mas não consegui que surtissem efeito, a exceção retornada foi a mesma, segue o código:

import pandas as pd

reviews = pd.read_csv("data.csv")
#reviews.head()

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.svm import LinearSVC
from sklearn.metrics import accuracy_score

x = reviews[["text_en", "text_pt"]]
y = reviews["sentiment"]

SEED = 5
np.random.seed(SEED)
treino_x, teste_x, treino_y, teste_y = train_test_split(x, y, test_size = 0.0001,                                                        
                                                         stratify = y)
treino_y = treino_y.values.reshape(-1, 1)
treino_x = treino_x.values.reshape(-1, 1)

from sklearn import preprocessing
le = preprocessing.LabelEncoder()
le.fit(treino_x)
le.fit(treino_y)
le.fit(teste_x)
le.fit(teste_y)

model = LinearSVC()
model.fit(treino_x, treino_y)

Fiquei confuso ao ver que quando aplicava um primeiro a exceção lançada era diferente. Como não tenho um conhecimento muito aprofundado sobre essas classes, gostaria de saber se existe algum problema de compatibilidade entra elas, senão, como poderia resolver esse problema, agradeço.

1 resposta
solução!

Consegui resolver, obrigado

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software