def calc(y_test, predict): y_pred = predict2tag(predict) f1 = f1_score(y_test, y_pred, average='macro') print("macro f1_score %.4f " % f1) f2 = f1_score(y_test, y_pred, average='micro') print("micro f1_score %.4f " % f2) avgf1 = (f1 + f2) / 2 print("avg_f1_score %.4f " % (avgf1)) return avgf1
hist = model.fit(x_tr, y_tr, validation_data=(x_v1, y_v1), epochs=fit_epoch, batch_size=fit_batch_size, shuffle=True, verbose=2, callbacks=[F1ScoreCallback(data_test=(x_test,y_test)), early_stopping, model_checkpoint, csv_logger], # sample_weight=train_sample_weight, ) count += 1 model.load_weights(bst_model_path) model.save("model_"+bst_model_path) predict = model.predict(x_v, batch_size=1024,verbose=2) pred_oob[ind_te] = predict p_test = model.predict(x_test, batch_size=1024) pred_test += p_test #print cv score y_pred = predict2tag(pred_oob) f1 = f1_score(y_train, y_pred, average='macro') print("cv macro f1_score %.4f " % f1) f2 = f1_score(y_train, y_pred, average='micro') print("cv micro f1_score %.4f " % f2) cvavgf1 = (f1 + f2) / 2 print("cv avg_f1_score %.4f " % (cvavgf1)) #print test score pred_test /= cv_folds y_pred = predict2tag(pred_test) f1 = f1_score(y_test, y_pred, average='macro') print("test macro f1_score %.4f " % f1) f2 = f1_score(y_test, y_pred, average='micro') print("test micro f1_score %.4f " % f2) avgf1 = (f1 + f2) / 2
# hist = model.fit(x_train, y_train, # validation_data=(x_val, y_val), # epochs=fit_epoch, batch_size=fit_batch_size, shuffle=True, # verbose=1, # callbacks=[F1ScoreCallback(), early_stopping, model_checkpoint, csv_logger] # ) model.load_weights(bst_model_path) list_val_text = tokenizer.texts_to_sequences(x_test) x_test = pad_sequences(list_val_text, maxlen=MAX_TEXT_LENGTH) predict = model.predict(x_test, batch_size=1024) predict1 = np.array(predict, copy=True) predict1[predict1 > 0.5] = 1 predict1[predict1 < 0.5] = 0 macro_f1 = f1_score(y_test, predict1, average="macro") micro_f1 = f1_score(y_test, predict1, average="micro") print("macro_f1", macro_f1) print("micro_f1", micro_f1) print(macro_f1 / 2 + micro_f1 / 2) y_pred = predict2tag(predict) f1 = f1_score(y_test, y_pred, average='macro') print("macro f1_score %.4f " % f1) f2 = f1_score(y_test, y_pred, average='micro') print("micro f1_score %.4f " % f2) avgf1 = (f1 + f2) / 2 print("avg_f1_score %.4f " % (avgf1))