Загруженная модель получает другой прогноз по сравнению с сохраненной моделью - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь сохранить модель и загрузить ее в другой сеанс, но у меня возникают несоответствия в прогнозировании, и я был бы признателен за любую помощь, которая может быть предложена. Итак, вот что я сделал ...

Сначала, после запуска модели, я использовал этот код для сохранения модели:

from sklearn.externals import joblib
joblib.dump(clf, "models.pkl")

и затем, чтобы загрузить файл в другой коллабораторный блокнот, я использовал функцию

from sklearn.externals import joblib
loaded_model = joblib.load('models.pkl')

тогда программа, которую я использовал для обработки одного изображения для тестирования

img_toArray = cv2.imread("/content/ESD/ESD/folder1/img1.png")
new_array = cv2.resize(img_toArray, (220, 220))
new_array = np.array(new_array).reshape(1,145200)

но это приводит к выводу массива ([4]) с каждым тестируемым изображением, и я не уверен, почему.

Я также попытался перезагрузить весь набор данных снова и отделить метки от объектов (изображения) и использовать train_test_split, чтобы выделить 90% набора данных для тестирования и когда я запускаю объекты (изображения) для тестирования с через блок кода:

loaded_model.predict(np.array(xTest[whatEverNumber]).reshape(1,145200))

Я получаю правильные прогнозы. Поэтому я не совсем понимаю, что я делаю неправильно, потому что в обоих примерах я обрабатываю изображения в основном одним и тем же методом, а затем разделяю изображения и запускаю их с помощью одного и того же метода прогнозирования. Поэтому я был бы признателен за любую помощь в выяснении, что я сделал не так.

Дополнительная информация, которая может оказаться полезной: я использую колабораторию, и моя модель - это SVM-файл sklearn, который проходит через cross_validation_predict, cross_validation_predict и, наконец, функцию подбора SVM.

Заранее спасибо!

1 Ответ

0 голосов
/ 04 июля 2019

Всегда ли loaded_model тренируется с одними и теми же данными? Вы можете столкнуться с этой проблемой, потому что ваша подобранная модель обучена с использованием различных кусков (сгибов) вашего набора данных, и вы подбираете / сохраняете его только на последней итерации, и, следовательно, каждый раз, когда вы проверяете ее, модель учится на разных данных (учитывая на каждый раз) и возвращает разные прогнозы. Это если подгонка модели находится в вашей петле перекрестной проверки. Могу я спросить, какой тип сплит-теста вы использовали? перемешиваются

...