У меня есть модель машинного обучения, которую я сохраняю в виде маринада после ее установки:
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?
Спасибо.