Beispiel #1
0
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))