#python #machine-learning #scikit-learn #pickle
#python #машинное обучение #scikit-learn #рассол
Вопрос:
Я создал модель, которая предсказывает название цветка на основе его функций, используя LinearSVC
in sklearn
, и сохранил модель, используя pickle
.
например, моими целевыми переменными являются lily
and rose
— поэтому, учитывая функции, модель может возвращать либо lily
or rose
как имя цветка.
На более позднем этапе я хочу переименовать lily
lilly
, поскольку я чувствовал, что это лучшее имя.
Я знаю два метода для достижения этой цели.
Одним из них является переобучение модели путем переименования целевых переменных lily
в to lilly
в моих данных перехода, что означает, что моя модель в будущем вернется lilly
и `выросла
Другой способ — сохранить модель такой, какая она есть, а затем после прогнозирования использовать словарь сопоставления {'lily' : 'lilly','rose': 'rose'}
для получения переименованного значения.
Есть ли какой-либо другой способ изменить существующую модель, которая сохраняется после травления, чтобы модель возвращалась lily
lilly
с этого момента?
спасибо за помощь
Ответ №1:
Вам просто нужно обновить classes
переменную классификатора после загрузки файла pickle. Быстрый пример с LinearSVC. Это может работать для любого классификатора, совместимого с Sklearn.
>>> from sklearn.svm import LinearSVC
>>> svc = LinearSVC(random_state=42).fit(df.data, df.target)
>>> svc.predict(df.data.iloc[0:2, :])
array(['setosa', 'setosa'], dtype=object)
>>> svc.classes_ = np.array(['class1', 'class2', 'class3'])
>>> svc.predict(df.data.iloc[0:2, :])
array(['class1', 'class1'], dtype='<U6')