Home › Fóruns › Fórum Processamento de Linguagem Natural com Deep Learning › CONTEUDO PARA MAIS SENTIMENTOS
- Este tópico contém 1 resposta, 2 vozes e foi atualizado pela última vez 2 anos, 7 meses atrás por Denny Ceccon.
- AutorPosts
- 27 de abril de 2022 às 22:43 #34483
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,.
29 de abril de 2022 às 09:10 #34496Olá Kayo,
O primeiro passo é converter os rótulos para inteiros, começando com
0
e incrementando1
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. - AutorPosts
- Você deve fazer login para responder a este tópico.