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.