- This topic has 1 reply, 2 voices, and was last updated 4 years, 1 month ago by .
Viewing 2 posts - 1 through 2 (of 2 total)
Viewing 2 posts - 1 through 2 (of 2 total)
- You must be logged in to reply to this topic.
Home › Forums › Fórum Processamento de Linguagem Natural com Deep Learning › CONTEUDO PARA MAIS SENTIMENTOS
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,.
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.