我为假新闻检测制作了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
,但是我收到了错误消息
答案 0 :(得分:1)
在使用pickle或joblib库进行训练时,保存缩放器对象。 加载此缩放器对象,然后将变换函数应用于测试数据(或实时数据)。
您使用缩放比例不同的数据训练了模型,并尝试对缩放比例不同的数据进行预测。