23 KiB
Початок роботи з Python та Scikit-learn для регресійних моделей
Скетчнот від Tomomi Imura
Квіз перед лекцією
Цей урок доступний на R!
Вступ
У цих чотирьох уроках ви дізнаєтесь, як створювати регресійні моделі. Ми скоро розглянемо, для чого вони потрібні. Але перш ніж почати, переконайтеся, що у вас є всі необхідні інструменти для початку роботи!
У цьому уроці ви навчитеся:
- Налаштовувати свій комп’ютер для локальних завдань машинного навчання.
- Працювати з Jupyter Notebook.
- Використовувати Scikit-learn, у тому числі встановлення.
- Вивчати лінійну регресію на практичному прикладі.
Встановлення та налаштування
🎥 Натисніть на зображення вище, щоб переглянути коротке відео про налаштування комп’ютера для ML.
-
Встановіть Python. Переконайтеся, що на вашому комп’ютері встановлено Python. Ви будете використовувати Python для багатьох завдань у сфері науки про дані та машинного навчання. Більшість комп’ютерних систем вже мають встановлений Python. Також є корисні Python Coding Packs, щоб полегшити налаштування для деяких користувачів.
Однак деякі випадки використання Python вимагають однієї версії програмного забезпечення, тоді як інші – іншої. Тому корисно працювати у віртуальному середовищі.
-
Встановіть Visual Studio Code. Переконайтеся, що у вас встановлено Visual Studio Code. Виконайте ці інструкції, щоб встановити Visual Studio Code для базового встановлення. Ви будете використовувати Python у Visual Studio Code на цьому курсі, тому варто ознайомитися, як налаштувати Visual Studio Code для розробки на Python.
Ознайомтеся з Python, пройшовши цей набір навчальних модулів
🎥 Натисніть зображення вище, щоб переглянути відео про використання Python у VS Code.
-
Встановіть Scikit-learn, дотримуючись інструкцій. Оскільки потрібно переконатися, що використовується Python 3, рекомендується використовувати віртуальне середовище. Зверніть увагу, що якщо ви встановлюєте цю бібліотеку на M1 Mac, на сторінці за посиланням є особливі інструкції.
-
Встановіть Jupyter Notebook. Вам потрібно буде встановити пакет Jupyter.
Ваше середовище для розробки ML
Ви будете використовувати ноутбуки для розробки коду на Python і створення моделей машинного навчання. Цей тип файлів є популярним інструментом для науковців-дослідників даних, їх можна впізнати за розширенням .ipynb.
Ноутбуки являють собою інтерактивне середовище, яке дозволяє розробнику і кодувати, і додавати нотатки, писати документацію навколо коду — це дуже корисно для експериментальних або дослідницьких проектів.
🎥 Натисніть зображення вище, щоб переглянути коротке відео з цього вправи.
Вправа — робота з ноутбуком
У цій папці ви знайдете файл notebook.ipynb.
-
Відкрийте notebook.ipynb у Visual Studio Code.
Запуститься сервер Jupyter з Python 3+. Ви побачите частини ноутбука, які можна
запустити, це блоки коду. Ви можете запустити блок коду, вибравши значок, що нагадує кнопку «play». -
Виберіть значок
mdі додайте трохи markdown із наступним текстом # Welcome to your notebook.Далі додайте трохи коду на Python.
-
Введіть print('hello notebook') у блоці коду.
-
Виберіть стрілку, щоб виконати код.
Ви маєте побачити надрукований рядок:
hello notebook
Ви можете переплітати свій код з коментарями для самодокументування ноутбука.
✅ Подумайте на хвилину, наскільки відрізняється робоче середовище веб-розробника від середовища дослідника даних.
Запуск Scikit-learn
Тепер, коли Python налаштований у вашому локальному середовищі, і ви почуваєтеся комфортно з Jupyter Notebook, давайте так само освоїмо Scikit-learn (вимовляється sci, як у слові science). Scikit-learn надає розгорнутий API, який допомагає виконувати завдання ML.
За їхнім вебсайтом, "Scikit-learn — це бібліотека машинного навчання з відкритим кодом, що підтримує навчання з вчителем та без вчителя. Вона також надає різні інструменти для підгонки моделей, попередньої обробки даних, вибору та оцінки моделей, а також багато інших корисних утиліт."
На цьому курсі ви будете використовувати Scikit-learn і інші інструменти для створення моделей машинного навчання, які виконують те, що ми називаємо «традиційними завданнями машинного навчання». Ми свідомо не розглядали нейронні мережі і глибинне навчання, тому що вони краще висвітлені в майбутньому курсі «AI для початківців».
Scikit-learn робить побудову моделей і їх оцінку досить простою. Вона орієнтована насамперед на числові дані і містить кілька готових наборів даних для навчання. Також у ній є вбудовані моделі для студентів. Давайте спершу розглянемо процес завантаження попередньо упакованих даних і використання вбудованого оцінювача — першої ML-моделі у Scikit-learn з базовими даними.
Вправа — ваш перший ноутбук з Scikit-learn
Цей підручник натхненний прикладом лінійної регресії на сайті Scikit-learn.
🎥 Натисніть зображення вище, щоб переглянути коротке відео з цієї вправи.
У файлі notebook.ipynb, що пов’язаний із цим уроком, очистіть усі клітинки, натиснувши значок «сміттєве відро».
У цьому розділі ви працюватимете з невеликим набором даних про діабет, який вбудований у Scikit-learn для навчальних цілей. Уявіть, що ви хочете перевірити лікування для пацієнтів з діабетом. Моделі машинного навчання можуть допомогти визначити, які пацієнти кращі кандидати для цього лікування, на основі комбінацій змінних. Навіть дуже базова регресійна модель, коли її візуалізувати, може показати інформацію про змінні, яка допоможе організувати ваші теоретичні клінічні випробування.
✅ Існує багато видів методів регресії, і який з них ви оберете, залежить від того, яке питання шукаєте. Якщо ви хочете передбачити ймовірний зріст людини певного віку, використовуйте лінійну регресію, тому що шукаєте числове значення. Якщо вам цікаво визначити, чи тип кухні слід вважати веганським чи ні, то вам потрібне категорійне призначення, тому використовуйте логістичну регресію. Ви дізнаєтесь більше про логістичну регресію пізніше. Подумайте, які запитання ви можете поставити до даних і які з методів будуть доцільнішими.
Давайте почнемо це завдання.
Імпорт бібліотек
Для цього завдання імпортуємо такі бібліотеки:
- matplotlib. Це корисний інструмент для графіків, ми використаємо його для створення лінійного графіка.
- numpy. numpy — корисна бібліотека для роботи з числовими даними в Python.
- sklearn. Це бібліотека Scikit-learn.
Імпортуйте потрібні бібліотеки для ваших завдань.
-
Додайте імпорти, набравши наступний код:
import matplotlib.pyplot as plt import numpy as np from sklearn import datasets, linear_model, model_selectionВи імпортуєте
matplotlib,numpyта імпортуєтеdatasets,linear_modelіmodel_selectionзіsklearn.model_selectionвикористовується для розбиття даних на навчальні та тестові набори.
Набір даних про діабет
Вбудований набір даних про діабет містить 442 зразки даних про діабет із 10 змінними-признаками, деякі з яких:
- age: вік у роках
- bmi: індекс маси тіла
- bp: середній кров’яний тиск
- s1 tc: Т-клітини (тип білих кров’яних клітин)
✅ Цей набір даних включає поняття 'стать' як важливу змінну-признак у дослідженнях діабету. Багато медичних наборів даних мають такого роду бінарну класифікацію. Подумайте, як такі категорії можуть виключати певні частини населення з лікувальних процедур.
Тепер завантажте дані X та y.
🎓 Пам’ятайте, що це навчання з учителем, і нам потрібна цільова змінна з ім'ям 'y'.
У новій клітинці коду завантажте набір даних про діабет, викликавши load_diabetes(). Параметр return_X_y=True означає, що X буде матрицею даних, а y — цільовою змінною регресії.
-
Додайте команди print, щоб показати форму матриці даних і її перший елемент:
X, y = datasets.load_diabetes(return_X_y=True) print(X.shape) print(X[0])Що ви отримуєте у відповідь — це кортеж. Ви присвоюєте перші два значення кортежу змінним
Xіyвідповідно. Дізнайтеся більше про кортежі.Ви бачите, що дані містять 442 елементи, організовані в масиви по 10 елементів:
(442, 10) [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 -0.04340085 -0.00259226 0.01990842 -0.01764613]✅ Подумайте про залежність між даними і цільовою змінною регресії. Лінійна регресія передбачає зв’язки між характеристиками X і цільовою змінною y. Чи можете ви знайти цільову змінну у документації для набору даних про діабет? Що цей набір даних демонструє, враховуючи цю ціль?
-
Наступним кроком оберіть частину цього набору даних для побудови графіка, вибравши 3-й стовпець набору даних. Це можна зробити за допомогою оператора
:, щоб вибрати всі рядки, а потім вибрати 3-й стовпець за індексом (2). Ви також можете змінити форму даних на 2D-масив — що потрібно для побудови графіків — за допомогоюreshape(n_rows, n_columns). Якщо один із параметрів — це -1, відповідний розмір обчислюється автоматично.X = X[:, 2] X = X.reshape((-1,1))✅ Любеочасно виводьте дані, щоб перевірити їх форму.
-
Тепер, коли у вас є дані для побудови графіків, можна перевірити, чи може машина допомогти визначити логічний розподіл для чисел у цьому наборі. Для цього потрібно розділити і дані (X), і ціль (y) на тестові та тренувальні набори. Scikit-learn має простий спосіб зробити це; ви можете розділити ваші тестові дані у вказаній точці.
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) -
Тепер ви готові навчити модель! Завантажте модель лінійної регресії та навчіть її на тренувальних наборах даних X і y, використовуючи
model.fit():model = linear_model.LinearRegression() model.fit(X_train, y_train)✅
model.fit()— це функція, яку ви побачите у багатьох бібліотеках ML на кшталт TensorFlow -
Потім створіть передбачення, використовуючи тестові дані, через функцію
predict(). Це буде використано для побудови лінії між групами даних.y_pred = model.predict(X_test) -
Тепер настав час показати дані на графіку. Matplotlib — дуже корисний інструмент для цього. Створіть розсіяний графік усіх тестових даних X і y, і використайте передбачення, щоб намалювати лінію в найбільш відповідному місці між групами даних моделі.
plt.scatter(X_test, y_test, color='black') plt.plot(X_test, y_pred, color='blue', linewidth=3) plt.xlabel('Scaled BMIs') plt.ylabel('Disease Progression') plt.title('A Graph Plot Showing Diabetes Progression Against BMI') plt.show()✅ Трохи подумайте про те, що тут відбувається. Пряма лінія проходить через багато маленьких точок даних, але що саме вона робить? Чи бачите ви, як можна використовувати цю лінію, щоб передбачити, де має розташовуватися нова, невідома точка даних відносно осі y графіка? Спробуйте висловити словами практичне застосування цієї моделі.
Вітаємо, ви побудували свою першу модель лінійної регресії, створили з її допомогою прогноз і відобразили це на графіку!
🚀Виклик
Відобразіть іншу змінну з цього набору даних. Підказка: відредагуйте цей рядок: X = X[:,2]. Враховуючи мету цього набору даних, що ви зможете дізнатися про прогресування діабету як хвороби?
Вікторина після лекції
Огляд та самостійне вивчення
У цьому підручнику ви працювали з простою лінійною регресією, а не з уніваріантною чи множинною лінійною регресією. Прочитайте трохи про відмінності між цими методами або перегляньте це відео
Дізнайтеся більше про концепцію регресії і подумайте, на які питання можна відповісти за допомогою цієї техніки. Пройдіть цей підручник, щоб поглибити свої знання.
Завдання
Відмова від відповідальності: Цей документ було перекладено за допомогою сервісу штучного інтелекту для перекладу Co-op Translator. Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.






