Scikit-learn — це бібліотека Python з відкритим кодом, яка спрощує процес створення моделей машинного навчання. Він пропонує зрозумілий і послідовний інтерфейс, який допомагає як новачкам, так і досвідченим користувачам працювати ефективно.
- Підтримує такі завдання, як кластеризація регресії класифікації та попередня обробка
- Робить створення моделі швидким і надійним
- Надає готові до використання інструменти для навчання та оцінювання
- Зменшує складність, уникаючи виконання алгоритмів вручну
Встановлення та використання Scikit-learn
Перш ніж ми почнемо будувати моделі, нам потрібно встановити Scikit-Learn. Він вимагає Python 3.8 або новішої версії та залежить від двох важливих бібліотек: NumPy і SciPy. Переконайтеся, що вони встановлені спочатку.
Щоб інсталювати Scikit-learn, виконайте таку команду:
pip install -U scikit-learn
int рядок java
Буде завантажено та встановлено останню версію Scikit-learn разом із залежностями. Давайте подивимося на різні етапи процесу створення моделі за допомогою бібліотеки Scikit-learn.
Крок 1: Завантаження набору даних
Набір даних складається з:
- Особливості (X): Вхідні змінні, що описують дані
- Ціль (y): Значення, яке ми хочемо передбачити
Scikit-learn надає такі вбудовані набори даних, як Iris Digits і Boston Housing. Використання набору даних Iris:
пункти sql
- load_iris() завантажує дані
- X зберігає дані про функції
- y зберігає цільові мітки
- feature_names і target_names дають описові назви
Ми можемо перевірити кілька перших рядків, щоб зрозуміти структуру. Для спеціальних наборів даних Pandas зазвичай використовується для завантаження зовнішніх файлів, таких як CSV.
Pythonfrom sklearn.datasets import load_iris iris = load_iris() X = iris.data y = iris.target feature_names = iris.feature_names target_names = iris.target_names print('Feature names:' feature_names) print('Target names:' target_names) print('nType of X is:' type(X)) print('nFirst 5 rows of X:n' X[:5])
Вихід:
Завантаження набору данихІноді нам потрібно працювати над нашими власними даними, а потім ми завантажуємо зовнішній набір даних. Для цього ми можемо використовувати бібліотека панд для легкого завантаження та маніпулювання наборами даних.
Для цього ви можете звернутися до нашої статті про Як імпортувати файл csv у pandas ?
Крок 2: розділення набору даних
Щоб справедливо оцінити модель, ми розбиваємо дані на:
- Навчальний набір: Використовується для навчання моделі
- Тестовий набір: використовується для оцінки того, наскільки добре модель узагальнює
Використовуючи train_test_split, ми розділяємо набір даних Iris так, що 60% призначено для навчання та 40% для тестування (test_size=0,4). random_state=1 забезпечує відтворюваність.
Після розбиття отримуємо:
- X_train y_train -> Дані про навчання
- X_test y_test -> Дані тестування
Перевірка фігур забезпечує правильний розподіл даних.
Pythonfrom sklearn.model_selection import train_test_split X_train X_test y_train y_test = train_test_split(X y test_size=0.4 random_state=1)
Тепер давайте перевіримо форми розділених даних, щоб переконатися, що обидва набори мають правильні пропорції даних, уникаючи будь-яких потенційних помилок під час оцінювання або навчання моделі.
Pythonprint('X_train Shape:' X_train.shape) print('X_test Shape:' X_test.shape) print('Y_train Shape:' y_train.shape) print('Y_test Shape:' y_test.shape)
Вихід:
факториал в java
Форма розділених данихКрок 3: Обробка категорійних даних
Алгоритми машинного навчання працюють із числовими вхідними даними, тому категоричні (текстові) дані потрібно перетворити на числа. Якщо моделі не закодовані належним чином, вони можуть неправильно інтерпретувати категорії. Scikit-learn надає кілька методів кодування:
1. Кодування міток : перетворює кожну категорію в унікальне ціле число. Наприклад, у стовпці з такими категоріями, як «кіт», «собака» та «птах», він перетворить їх на 0 1 і 2 відповідно. Цей метод добре працює, коли категорії мають значущий порядок, наприклад, низький середній і високий.
- LabelEncoder(): Він ініціалізується для створення об’єкта кодувальника, який перетворюватиме категоричні значення в числові мітки.
- fit_transform(): Цей метод спочатку адаптує кодер до категоріальних даних, а потім перетворює категорії у відповідні числові мітки.
from sklearn.preprocessing import LabelEncoder categorical_feature = ['cat' 'dog' 'dog' 'cat' 'bird'] encoder = LabelEncoder() encoded_feature = encoder.fit_transform(categorical_feature) print('Encoded feature:' encoded_feature)
Вихід:
Функція кодування: [1 2 2 1 0]
Команда grep в Linux
2. One-Hot кодування : One-Hot Encoding створює окремі двійкові стовпці для кожної категорії. Це корисно, коли категорії не мають природного порядку. Приклад: cat dog bird -> 3 нові стовпці (кіт/собака/птах) з 1 і 0.
- Вхідні дані потрібно змінити на двовимірний масив
- OneHotEncoder(sparse_output=False) генерує двійкові стовпці
from sklearn.preprocessing import OneHotEncoder import numpy as np categorical_feature = ['cat' 'dog' 'dog' 'cat' 'bird'] categorical_feature = np.array(categorical_feature).reshape(-1 1) encoder = OneHotEncoder(sparse_output=False) encoded_feature = encoder.fit_transform(categorical_feature) print('OneHotEncoded feature:n' encoded_feature)
Вихід:
Крім Label Encoding і One-Hot Encoding існують інші методи, як Середнє кодування .
Крок 4: Навчання моделі
Тепер, коли наші дані готові, настав час тренувати модель машинного навчання. Scikit-learn має багато алгоритмів із узгодженим інтерфейсом для прогнозування та оцінки навчання. Тут ми скористаємося Логістична регресія як приклад.
Примітка : Ми не будемо вдаватися в деталі того, як працює алгоритм, оскільки нам цікаво лише зрозуміти його реалізацію.
- log_reg = LogisticRegression(max_iter=200): Створення об’єкта класифікатора логістичної регресії.
- log_reg.fit(X_train y_train): Використовуючи це модель логістичної регресії коригує параметри моделі, щоб найкраще відповідати даним.
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression(max_iter=200) log_reg.fit(X_train y_train)
Навчання з використанням логістичної регресії.Крок 5: Робіть прогнози
Після навчання ми використовуємо модель для прогнозування тестових даних X_test, викликаючи метод predict. Це повертає передбачені мітки y_pred.
- log_reg.predict: Він використовує навчену модель логістичної регресії для прогнозування міток для тестових даних X_test.
y_pred = log_reg.predict(X_test)
Крок 6: Оцінка точності моделі
Перевірте, наскільки добре працює наша модель, порівнявши y_test і y_pred. Тут ми використовуємо метод accuracy_score модуля метрик.
список на javaPython
from sklearn import metrics print('Logistic Regression model accuracy:' metrics.accuracy_score(y_test y_pred))
Вихід:
Точність моделі логістичної регресії: 0,9666666666666667
Тепер ми хочемо, щоб наша модель робила прогнози на нових вибіркових даних. Тоді вхідні дані зразка можна просто передати так само, як ми передаємо будь-яку матрицю ознак. Тут ми використали його як зразок = [[3 5 4 2] [2 3 5 4]]
Pythonsample = [[3 5 4 2] [2 3 5 4]] preds = log_reg.predict(sample) pred_species = [iris.target_names[p] for p in preds] print('Predictions:' pred_species)
Вихід:
Прогнози: [np.str_('virginica') np.str_('virginica')]
Особливості Scikit-learn
Scikit-learn використовується, оскільки він робить створення моделей машинного навчання простим і ефективним. Ось кілька важливих причин:
- Готові до використання інструменти : Він надає вбудовані функції для типових завдань, таких як навчальні моделі попередньої обробки даних і прогнозування. Це економить час, уникаючи необхідності кодувати алгоритми з нуля.
- Легка оцінка моделі : за допомогою таких інструментів, як перехресна перевірка та показники продуктивності, це допомагає оцінити, наскільки добре працює наша модель, і визначити області, які потрібно вдосконалити.
- Широка підтримка алгоритмів : Він пропонує багато популярних алгоритмів машинного навчання, включаючи регресію класифікації та кластеризацію, що дає нам можливість вибрати правильну модель для нашої проблеми.
- Плавна інтеграція : створено на основі важливих бібліотек Python, таких як NumPy і SciPy, тому вписується в наш існуючий робочий процес аналізу даних.
- Простий і послідовний інтерфейс : той самий простий синтаксис працює в різних моделях, що полегшує вивчення та перемикання між алгоритмами.
- Налаштувати модель легко : такі інструменти, як пошук у сітці, допомагають нам точно налаштувати параметри нашої моделі, щоб підвищити точність без додаткових турбот.
Переваги використання Scikit-learn
- Зручний для користувача : послідовний і простий інтерфейс Scikit-learn робить його доступним для початківців і найкращим для експертів.
- Економія часу: Попередньо створені інструменти та алгоритми скорочують час розробки, що дозволяє нам більше зосереджуватися на вирішенні проблем, ніж на деталях кодування.
- Краща продуктивність моделі : Прості у використанні інструменти налаштування та оцінки допомагають підвищити точність і надійність моделі.
- Гнучкий і масштабований : підтримує широкий спектр алгоритмів і плавно інтегрується з іншими бібліотеками Python, що допомагає зробити його придатним для проектів будь-якого розміру.
- Сильна підтримка спільноти : Велика активна спільнота забезпечує регулярне оновлення обширної документації та безліч ресурсів, щоб допомогти, коли ми застрягли.