Переименование имен классов целевой переменной в режиме обученного классификатора Sklearn

#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')