加载Keras模型并进行预测

时间:2020-04-02 10:03:49

标签: python machine-learning keras

我为假新闻检测制作了Keras NN模型,并获得了89,1的验证准确性。我使用了50 000个样本进行培训,并使用10000个进行测试,并使用2000个进行了验证。我已保存该模型。 现在,我要加载该模型,并加载要基于该数据进行预测的新数据。

import pandas as pd

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, RobustScaler, Normalizer, MinMaxScaler
from sklearn.feature_selection import RFE
from sklearn.metrics import accuracy_score

from tensorflow.python.keras.models import Sequential, load_model
from tensorflow.python.keras.layers import Dense, Dropout, LeakyReLU, Conv2D, LSTM, Flatten

from tensorflow.python.keras import optimizers

from tensorflow.python.keras.regularizers import l2
from tensorflow.python.keras.callbacks import EarlyStopping, ModelCheckpoint

import numpy as np



my_model_1 = load_model("keras fake news acc 89.1.h5")

validation_df = pd.read_csv("validation.csv")
validation_features = validation_df.iloc[:,:-1]
validation_results = validation_df.iloc[:,-1].tolist()

scaler = StandardScaler()
validation_features = scaler.transform(validation_features) #ERROR

问题是我得到一个错误:

NotFittedError: This StandardScaler instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.

如果我在功能上使用fit_transform,则不会出现错误,但是我的准确度为52%,这太糟糕了(因为我有89.1%)。

我该如何解决? 我是否还需要加载用于训练模型的数据,还是可以仅加载模型并传递数据以进行预测?

训练模型时,我使用fit_transform来训练数据,而使用transform来测试数据。我想现在,我应该只对数据使用transform,但是我收到了错误消息

1 个答案:

答案 0 :(得分:1)

在使用pickle或joblib库进行训练时,保存缩放器对象。 加载此缩放器对象,然后将变换函数应用于测试数据(或实时数据)。

您使用缩放比例不同的数据训练了模型,并尝试对缩放比例不同的数据进行预测。

相关问题