Загрузка модели Keras и прогнозирование с ее помощью - PullRequest
0 голосов
/ 02 апреля 2020

Я сделал модель 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 Ответ

1 голос
/ 02 апреля 2020

Сохраните объект масштабирования во время обучения, используя библиотеку pickle или joblib. Загрузите этот масштабирующий объект и затем примените функцию преобразования к тестовым данным (или данным в реальном времени).

Вы обучили модель данным, имеющим другое масштабирование, и пытались делать прогнозы для данных с другим масштабированием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...