CONTEUDO PARA MAIS SENTIMENTOS

Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #34483
    Jones Granatyr
    Moderador

      Tentei fazer para mais que dois sentimentos, montei a base de dados, mais no resultado do teste ele apresenta varios valores. tem algum conteudo que eu possa seguir para tentar corrigir esse problema, com dois sentimentos funciona normal,.

      #34496
      Denny Ceccon
      Moderador

        Olá Kayo,

        O primeiro passo é converter os rótulos para inteiros, começando com 0 e incrementando 1 para nova cada classe. Este processo é chamado de LabelEncoder, e pode ser feito utilizando uma classe do Sklearn. No código da aula, depois de criar data_labels, você poderia fazer essa transformação assim:

        data_labels = y
        from sklearn.preprocessing import LabelEncoder
        le = LabelEncoder()
        data_labels = le.fit_transform(data_labels)
        print(data_labels)
        # array([1, 2, 2, ..., 0, 0, 1])

        Aí, depois de treinar o modelo (adaptado para seu número de classes), você continua fazendo a predição o método predict. Você veria algo assim (supondo que temos 3 classes):

        y_pred_test = Dcnn.predict(test_inputs)
        print(y_pred_test)
        # array([[0.11550928, 0.195952 , 0.6885387 ], 
        #        [0.134687  , 0.340371 , 0.52494204], 
        #        ...,
        #        [0.27549207, 0.4443647, 0.28011146],
        #        [0.10340592, 0.2649754, 0.63168657]], dtype=float32)

        Este array tem shape (n_registros, n_classes), ou seja, cada linha representa um registro e cada coluna representa uma das 3 classes. Os valores são o resultado da ativação final do modelo, que neste caso é softmax, e indicam a probabilidade de o registro daquela linha pertencer àquela classe. Ou seja, você pode recuperar a predição vendo qual a classe de maior probabilidade para cada registro, e isso pode ser feito com:

        y_pred_labels = np.argmax(y_pred_test, axis=-1)
        print(y_pred_labels)
        # array([2, 2, 0, ..., 1, 2, 2])

        Este é o resultado com os rótulos codificados, para recuperar o rótulo original você faz:

        y_pred = le.inverse_transform(y_pred_labels.reshape(-1))

        Agora, y_pred contém seus resultados finais.

      Visualizando 2 posts - 1 até 2 (de 2 do total)
      • Você deve fazer login para responder a este tópico.