Щоб вибрати навчений класифікатор у Python за допомогою модуля 'pickle', ми можемо виконати кілька простих кроків. Піклування дозволяє нам серіалізувати об’єкт і зберегти його у файлі, який потім можна завантажити та використовувати пізніше. Це особливо корисно, коли ми хочемо зберегти навчену модель машинного навчання, таку як класифікатор регресії, для майбутнього використання без необхідності щоразу її перенавчати.
По-перше, нам потрібно імпортувати модуль 'pickle' у наш сценарій Python:
python import pickle
Далі нам потрібно навчити наш класифікатор і отримати навчену модель. Припустімо, що ми вже навчили класифікатор регресії та зберегли його в змінній під назвою «regression_model».
Для маринування навченої моделі ми можемо використати функцію pickle.dump(). Ця функція приймає два параметри: об’єкт, який ми хочемо видалити (в даному випадку, навчений класифікатор), і об’єкт файлу, де ми хочемо зберегти виділений об’єкт. Ми можемо відкрити файл у двійковому режимі запису за допомогою функції open().
python with open('regression_model.pkl', 'wb') as file: pickle.dump(regression_model, file)
У наведеному вище коді ми відкриваємо файл із назвою «regression_model.pkl» у двійковому режимі запису («wb») і передаємо його як другий параметр у «pickle.dump()». Навчений класифікатор, що зберігається у змінній 'regression_model', маринується та зберігається у файлі.
Тепер ми успішно вибрали наш навчений класифікатор. Ми можемо завантажити його назад у пам’ять, коли нам це потрібно, за допомогою функції 'pickle.load()'.
python with open('regression_model.pkl', 'rb') as file: loaded_model = pickle.load(file)
У наведеному вище коді ми відкриваємо файл pickle у двійковому режимі читання ('rb') і передаємо його як параметр у 'pickle.load()'. Вибраний об'єкт завантажується в змінну 'loaded_model', яку можна використовувати для прогнозування або будь-яких інших операцій.
Ось повний приклад, що демонструє маринування та завантаження навченого класифікатора регресії:
python import pickle from sklearn.linear_model import LinearRegression # Training the regression model X_train = [[1], [2], [3], [4], [5]] y_train = [2, 4, 6, 8, 10] regression_model = LinearRegression() regression_model.fit(X_train, y_train) # Pickling the trained model with open('regression_model.pkl', 'wb') as file: pickle.dump(regression_model, file) # Loading the pickled model with open('regression_model.pkl', 'rb') as file: loaded_model = pickle.load(file) # Using the loaded model for prediction X_test = [[6]] predicted_value = loaded_model.predict(X_test) print(predicted_value)
У наведеному вище прикладі ми спочатку навчаємо просту модель лінійної регресії за допомогою класу «LinearRegression» із модуля «sklearn.linear_model». Потім ми переміщуємо навчену модель у файл з назвою "regression_model.pkl". Пізніше ми завантажуємо обрану модель із файлу та використовуємо її для прогнозування значення для тестового введення «X_test».
Вибираючи та завантажуючи навчений класифікатор, ми можемо повторно використовувати модель без необхідності її повторного навчання, що може заощадити значну кількість часу та обчислювальних ресурсів.
Інші останні запитання та відповіді щодо EITC/AI/MLP Машинне навчання з Python:
- Що таке опорна векторна машина (SVM)?
- Чи добре підходить алгоритм K найближчих сусідів для побудови моделей машинного навчання, які можна навчити?
- Чи зазвичай навчальний алгоритм SVM використовується як двійковий лінійний класифікатор?
- Чи можуть алгоритми регресії працювати з безперервними даними?
- Чи лінійна регресія особливо добре підходить для масштабування?
- Як динамічна пропускна здатність середнього зсуву адаптивно регулює параметр пропускної здатності на основі щільності точок даних?
- Яка мета призначення ваг наборам функцій у реалізації динамічної пропускної здатності середнього зсуву?
- Як визначається нове значення радіуса в підході динамічної смуги пропускання середнього зсуву?
- Як підхід динамічної смуги пропускання середнього зсуву справляється з правильним знаходженням центроїдів без жорсткого кодування радіуса?
- Яке обмеження використання фіксованого радіуса в алгоритмі середнього зсуву?
Перегляньте більше запитань і відповідей у EITC/AI/MLP Machine Learning with Python