Розгортання моделі

Проєктування робочих процесів машинного навчання в Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Об'єкт конвеєра моделі з відбором ознак, вибором моделі, налаштуванням і навчанням передається в продакшн‑конвеєр, який використовує навчений конвеєр для передбачення.

Проєктування робочих процесів машинного навчання в Python

Серіалізація моделі

Збережіть класифікатор у файл:

import pickle
clf = RandomForestClassifier().fit(X_train, y_train)
with open('model.pkl', 'wb') as file:
    pickle.dump(clf, file=file)

Завантажте його з файла знову:

with open('model.pkl', 'rb') as file:
    clf2 = pickle.load(file)
Проєктування робочих процесів машинного навчання в Python

Серіалізація конвеєра

Середовище розробки:

vt = SelectKBest(f_classif).fit(
    X_train, y_train)
clf = RandomForestClassifier().fit(
    vt.transform(X_train), y_train)
with open('vt.pkl', 'wb') as file: 
     pickle.dump(vt)
with open('clf.pkl', 'wb') as file: 
     pickle.dump(clf)

Робочий процес, де об'єкт відбору ознак і навчена модель мають окремо передаватися в продакшн.

Проєктування робочих процесів машинного навчання в Python

Серіалізація конвеєра

Продакшн‑середовище:

with open('vt.pkl', 'rb') as file: 
    vt = pickle.load(vt)
with open('clf.pkl', 'rb') as file: 
    clf = pickle.load(clf)
clf.predict(vt.transform(X_new))

Робочий процес, де об'єкт відбору ознак і навчена модель мають окремо передаватися в продакшн.

Проєктування робочих процесів машинного навчання в Python

Серіалізація конвеєра

Середовище розробки:

pipe = Pipeline([
    ('fs', SelectKBest(f_classif)), 
    ('clf', RandomForestClassifier())
])
params = dict(fs__k=[2, 3, 4],
    clf__max_depth=[5, 10, 20])
gs = GridSearchCV(pipe, params)
gs = gs.fit(X_train, y_train)

with open('pipe.pkl', 'wb') as file: pickle.dump(gs, file)

Оптимізований процес: відбір ознак і навчання моделі в одному об'єкті конвеєра.

Проєктування робочих процесів машинного навчання в Python

Серіалізація конвеєра

Продакшн‑середовище:

with open('pipe.pkl', 'rb') as file:
   gs = pickle.dump(gs, file)
gs.predict(X_test)

Оптимізований процес: відбір ознак і навчання моделі в одному об'єкті конвеєра.

Проєктування робочих процесів машинного навчання в Python

Власні перетворення ознак

   checking_status  duration       ...        own_telephone  foreign_worker
0                1         6       ...                    1               1
1                0        48       ...                    0               1
def negate_second_column(X):
    Z = X.copy()
    Z[:,1] = -Z[:,1]
    return Z
pipe = Pipeline([('ft', FunctionTransformer(negate_second_column)), 
    ('clf', RandomForestClassifier())])
Проєктування робочих процесів машинного навчання в Python

Готово до продакшну!

Проєктування робочих процесів машинного навчання в Python

Preparing Video For Download...