Сохранение и загрузка модели ML - PullRequest
0 голосов
/ 27 августа 2018

У меня есть модель машинного обучения, которую я сохраняю в виде маринада после ее установки:

saved_model = open (path+"clustering_model.pkl", "wb")
pickle.dump(cluster, saved_model)
saved_model.close()

Я могу загрузить его и протестировать из другого файла Python, импортировав метод прогнозирования:

Я создал тестовый ввод:

processed_responses = {"C1": ["low"], "C2": ["high"],
"C3": ["low"], "C4": ["low"], "C5": ["low"], "C6": ["low"]}

test_data_frame = pd.DataFrame(data = processed_responses)

Затем я загрузил модель обратно и вызвал метод прогнозирования с моими данными теста:

saved_model = open(path+"clustering_model.pkl", 'rb')
fitted_model = pickle.load(saved_model)
labels,cost = _predict_cluster(fitted_model, test_data_frame)

На моей машине все работает.

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

not enough values to unpack (expected 2 got 1)

Ошибка возникает из этого метода:

labels,cost = _predict_cluster(fitted_model, test_data_frame)

Проверьте прогноз, который я напечатал, какой ввод он получает, и он показывает мне, что и модель, и тестовые данные получены правильно:

    C1     C2    C3    C4   C5   C6
0   low   high   low  low   low  low

Это подходящая модель, которую я загрузил назад и отправил для прогнозирования:

KModes(cat_dissim=<function matching_dissim at 0x7f60c9c0cb70>, 
init='Random', max_iter=200, n_clusters=8, n_init=15, verbose=0)

До сих пор я не смог понять, почему я получаю эту ошибку. Как это возможно, что я могу загрузить модель обратно на мою машину и вызвать прогноз с тестовыми данными, но как часть основного приложения на dev?

Спасибо.

...