在适合预测单个字符串的类别后如何使用模型?

数据挖掘 Python 分类 喀拉斯 美国有线电视新闻网 预言
2022-03-14 12:44:30

建立模型后,如何使用它来预测单个字符串的类别?

model.predict()正在返回类似的东西,[[0.41100174 0.5889983 ]]而不是它的预测类(01)。

假设我是model这样构建的:

hist = model.fit(data.x_train,
                 data.y_train,
                 validation_data=(data.x_test, data.y_test),
                 epochs=500,
                 batch_size=50,
                 shuffle=False,
                 verbose=2,
                 callbacks=[checkpoint, estopping, tensorboard])

我正在寻找使用 预测字符串的类model.predict(),但它返回类似[[0.41100174 0.5889983 ]]而不是预测的类(01)。

data.x_test(用于验证数据)的形状与( data.x_datareformatted string to predict) 的形状相同:((1, 250, 70)显然,除了行数)

这是我尝试使用该模型来预测字符串类别的方法。

def predict_string(model,s):
    df = pd.DataFrame([s], columns=['text'])
    df = df.reset_index(drop=True)
    df['label'] = [0]

    df.label = pd.to_numeric(df.label, errors='coerce') # Convert to integer
    df = df.dropna()
    df = df[df.label.apply(lambda x: x !="")]
    df = df[df.text.apply(lambda x: x !="")]

    vocab_len = 70
    data = char_preproc(df.text, df.label, vocab_len, True, None)
    y_pred = model.predict(data.x_data)
    return y_pred


s = "Best movie ever" # Out: [[0.41100174 0.5889983 ]]

# s = "Worst movie ever" # Out: [[0.5436389  0.45636114]]

y_pred = predict_string(model, s)
print("Review: {}\"\nPredict: {}".format(s, y_pred))

我不确定这是否重要,但为了测试,我使用在烂番茄电影评论数据集上训练的字符级 CNN1将电影评论分类为好 ( ) 或坏 ( 0) ,通过 Google Colab 在 GPU 上运行。

1个回答

[[0.41100174 0.5889983 ]]这意味着第 0 类的概率是 0.411,第 1 类的概率是 0.588。由于第 1 类的概率大于第 0 类的概率,所以它属于第 1 类。

a = [[0.41100174 0.5889983 ]]

np.argmax(a)

Output : 1

np.argmax会给你上课。