You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/uk/2-Regression/1-Tools
localizeflow[bot] d8d9750f1d
[my,uk,lt] chore(i18n): sync translations
3 weeks ago
..
solution chore(i18n): sync translations with latest source changes (chunk 1/1, 300 changes) 8 months ago
README.md [my,uk,lt] chore(i18n): sync translations 3 weeks ago
assignment.md chore(i18n): sync translations with latest source changes (chunk 1/1, 300 changes) 8 months ago
notebook.ipynb 🌐 Update translations via Co-op Translator 1 year ago

README.md

Початок роботи з Python та Scikit-learn для регресійних моделей

Короткий конспект регресій

Конспект від Tomomi Imura

Квіз перед лекцією

Цей урок доступний також на R!

Вступ

У цих чотирьох уроках ви дізнаєтесь, як будувати регресійні моделі. Незабаром ми обговоримо, для чого це потрібно. Але перш ніж щось робити, переконайтеся, що у вас є правильні інструменти для початку!

У цьому уроці ви навчитесь:

  • Налаштовувати ваш комп’ютер для локальних завдань машинного навчання.
  • Працювати з Jupyter Notebooks.
  • Використовувати Scikit-learn, включно з встановленням.
  • Вивчати лінійну регресію через практичне завдання.

Встановлення та налаштування

ML для початківців - Налаштуйте свої інструменти для створення моделей машинного навчання

🎥 Натисніть на зображення вище, щоб переглянути коротке відео про налаштування комп’ютера для ML.

  1. Встановіть Python. Переконайтеся, що Python встановлений на вашому комп’ютері. Ви будете використовувати Python для багатьох завдань з науки про дані та машинного навчання. Більшість комп’ютерних систем вже мають встановлений Python. Також є корисні Python Coding Packs, які спрощують налаштування для деяких користувачів.

    Однак деякі застосування Python потребують однієї версії софту, інші — іншої. Тому корисно працювати в віртуальному середовищі.

  2. Встановіть Visual Studio Code. Переконайтеся, що у вас встановлений Visual Studio Code. Дотримуйтесь цих інструкцій, щоб встановити Visual Studio Code для базового інсталяційного процесу. Ви будете використовувати Python у Visual Studio Code на цьому курсі, тож можливо захочете ознайомитися, як налаштувати Visual Studio Code для розробки на Python.

    Опановуйте Python, працюючи з колекцією навчальних модулів

    Налаштування Python з Visual Studio Code

    🎥 Натисніть на зображення вище для перегляду відео: використання Python у VS Code.

  3. Встановіть Scikit-learn, слідуючи інструкціям. Оскільки потрібно використовувати Python 3, рекомендується працювати у віртуальному середовищі. Якщо ви встановлюєте цю бібліотеку на Mac з M1, на сторінці згадано спеціальні інструкції.

  4. Встановіть Jupyter Notebook. Вам потрібно буде встановити пакет Jupyter.

Ваше робоче середовище для ML

Ви будете використовувати ноутбуки для розробки Python-коду і створення моделей машинного навчання. Цей тип файлу — звичний інструмент для науковців з даних, його легко впізнати за розширенням .ipynb.

Ноутбуки — це інтерактивне середовище, яке дозволяє розробнику і кодувати, і додавати нотатки та документацію навколо коду, що дуже допомагає для експериментальних чи наукових проєктів.

ML для початківців - Налаштуйте Jupyter Notebooks для початку побудови регресійних моделей

🎥 Натисніть на зображення вище для короткого відео з виконанням цього завдання.

Вправа — робота з ноутбуком

У цій папці знайдете файл notebook.ipynb.

  1. Відкрийте notebook.ipynb у Visual Studio Code.

    Запуститься сервер Jupyter з Python 3+. Ви побачите блоки ноутбука, які можна виронити — це фрагменти коду. Щоб запустити блок коду, виберіть значок, схожий на кнопку відтворення.

  2. Виберіть іконку md і додайте трохи markdown з таким текстом # Ласкаво просимо у ваш ноутбук.

    Далі додайте трохи коду на Python.

  3. Напишіть у код-блоці print('hello notebook').

  4. Виберіть стрілку, щоб запустити код.

    Ви побачите надрукований рядок:

    hello notebook
    

VS Code з відкритим ноутбуком

Ви можете чергувати код з коментарями для самодокументування ноутбука.

✅ Подумайте хвилинку, наскільки інше робоче середовище у веб-розробника порівняно з науковцем з даних.

Початок роботи зі Scikit-learn

Тепер, коли Python налаштований у вашому локальному середовищі, і ви вже впевнено використовуєте Jupyter Notebooks, давайте так само ознайомимось зі Scikit-learn (вимовляється як сай, від science). Scikit-learn надає широкий API, який допоможе виконувати ML-завдання.

Згідно з їхнім веб-сайтом, "Scikit-learn — це бібліотека з відкритим кодом для машинного навчання, що підтримує контрольоване та неконтрольоване навчання. Вона також надає інструменти для налаштування моделей, препроцесування даних, вибору та оцінки моделей та багато інших утиліт."

У цьому курсі ви будете використовувати Scikit-learn та інші інструменти для створення моделей машинного навчання, виконуючи так звані 'традиційні ML' завдання. Ми навмисно не охоплювали нейронні мережі та глибоке навчання, які краще розкриті у нашій майбутній програмі 'AI для початківців'.

Scikit-learn робить процес побудови моделей та їх оцінки дуже простим. Він орієнтований передусім на числові дані і містить кілька готових наборів даних для навчання. Також включає попередньо створені моделі для тестування студентами. Давайте розглянемо процес завантаження вбудованих даних і використання вбудованого оцінювача, щоб створити вашу першу ML-модель зі Scikit-learn на базі простих даних.

Вправа — ваш перший ноутбук зі Scikit-learn

Цей підручник натхненний прикладом лінійної регресії на сайті Scikit-learn.

ML для початківців - Ваш перший проєкт лінійної регресії на Python

🎥 Натисніть на зображення вище для короткого відео з виконанням цього завдання.

У файлі notebook.ipynb, пов’язаному з цим уроком, очистіть усі клітинки, натиснувши іконку кошика.

У цьому розділі ви будете працювати з невеликим набором даних про діабет, який вбудований у Scikit-learn для навчальних цілей. Уявіть, що ви хочете перевірити лікування для діабетичних пацієнтів. Моделі машинного навчання можуть допомогти визначити, які пацієнти краще відповідають на лікування, ґрунтуючись на комбінаціях змінних. Навіть дуже просту регресійну модель, якщо її візуалізувати, можна використати для отримання інформації про змінні, що допоможуть організувати теоретичні клінічні дослідження.

✅ Існує багато видів регресійних методів, і ваш вибір залежить від мети. Якщо ви хочете передбачити ймовірний зріст людини певного віку, використовуйте лінійну регресію, адже шукаєте числове значення. Якщо ж хочете дізнатись, чи є певна кухня веганською, вам потрібне віднесення до категорії — для цього підійде логістична регресія. Ви дізнаєтесь більше про логістичну регресію пізніше. Подумайте про деякі питання, які можна ставити до даних, і який метод підходить більше.

Почнемо це завдання.

Імпорт бібліотек

Для цього завдання імпортуємо декілька бібліотек:

  • matplotlib. Корисний інструмент для графіків, який ми використаємо для побудови лінійного графіка.
  • numpy. numpy — корисна бібліотека для роботи з числовими даними в Python.
  • sklearn. Це бібліотека Scikit-learn.

Імпортуйте потрібні бібліотеки для роботи.

  1. Додайте імпорти, написавши наступний код:

    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: T-клітини (тип білих кров’яних клітин)

✅ Цей набір включає ознаку «стать», важливу для досліджень діабету. Багато медичних наборів містять таке бінарне категоризування. Подумайте, як подібна класифікація може виключити певні групи населення з лікування.

Тепер завантажте дані X і y.

🎓 Пам’ятайте, це навчання з учителем, тому нам потрібна цільова змінна y.

У новій клітинці коду завантажте набір даних про діабет, викликавши load_diabetes(). Вхід return_X_y=True вказує, що X — матриця даних, а y — ціль регресії.

  1. Додайте кілька команд 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. Можете знайти ціль набору даних про діабет у документації? Що демонструє цей набір, спираючись на ціль?

  2. Виберіть частину цього набору для побудови графіка, взявши 3-й стовпець. Для цього використовуйте оператор :, щоб взяти всі рядки, а потім виберіть 3-й стовпець із індексом (2). Дані можна перетворити у 2D-масив — це потрібно для побудови графіків — за допомогою reshape(n_rows, n_columns). Якщо один з параметрів -1, відповідний розмір обчислюється автоматично.

    X = X[:, 2]
    X = X.reshape((-1,1))
    

    ✅ Будь-коли можете вивести дані і перевірити їх форму.

  3. Тепер, коли дані готові для побудови графіка, подивимось, чи машина допоможе логічно поділити числа в наборі. Для цього потрібно розділити і дані (X), і ціль (y) на тестовий і тренувальний набори. Scikit-learn має простий спосіб зробити це — вибрати точку розділу.

    X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
    
  4. Тепер можна навчити модель! Завантажте модель лінійної регресії і навчіть її на тренувальних X і y за допомогою model.fit():

    model = linear_model.LinearRegression()
    model.fit(X_train, y_train)
    

    ✅ model.fit() — функція, яку ви побачите у багатьох ML бібліотеках, таких як TensorFlow

  5. Потім зробіть прогноз на тестових даних, використовуючи функцію predict(). Це допоможе нам намалювати лінію між групами даних.

    y_pred = model.predict(X_test)
    
  6. Час показати дані на графіку. Matplotlib — дуже корисний інструмент для цього. Побудуйте діаграму розсіяння (scatterplot) усіх 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. Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.