22 KiB
Начало работы с Python и Scikit-learn для регрессионных моделей
Скетчнот от Tomomi Imura
Викторина перед лекцией
Этот урок доступен на R!
Введение
В этих четырёх уроках вы узнаете, как строить регрессионные модели. Мы скоро обсудим, для чего они нужны. Но прежде чем начать, убедитесь, что у вас есть все необходимые инструменты для запуска процесса!
В этом уроке вы научитесь:
- Настраивать компьютер для локальных задач машинного обучения.
- Работать с Jupyter Notebooks.
- Использовать Scikit-learn, включая установку.
- Исследовать линейную регрессию в практическом упражнении.
Установка и настройка
🎥 Нажмите на изображение выше для короткого видео о настройке компьютера для машинного обучения.
-
Установите Python. Убедитесь, что Python установлен на вашем компьютере. Вы будете использовать Python для многих задач в области науки о данных и машинного обучения. Большинство систем уже имеют установленный Python. Также доступны полезные наборы для программирования на Python, чтобы упростить настройку для некоторых пользователей.
Некоторые случаи использования 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.
Ваша среда для машинного обучения
Вы будете использовать notebooks для разработки кода на Python и создания моделей машинного обучения. Такие файлы часто применяются учёными данных и имеют расширение .ipynb.
Notebooks – это интерактивная среда, позволяющая как писать код, так и добавлять заметки и документацию, что очень удобно для экспериментальных или исследовательских проектов.
🎥 Нажмите на изображение выше для короткого видео с разбором упражнения.
Упражнение - работа с notebook
В этой папке вы найдете файл notebook.ipynb.
-
Откройте файл notebook.ipynb в Visual Studio Code.
Запустится сервер Jupyter с Python 3+. Вы увидите области notebook, которые можно
запустить— это блоки кода. Запустить блок кода можно, нажав значок кнопки воспроизведения. -
Выберите значок
mdи добавьте немного markdown с текстом # Добро пожаловать в ваш notebook.Затем добавьте фрагмент кода на Python.
-
Введите print('hello notebook') в блоке кода.
-
Нажмите стрелку, чтобы запустить код.
Вы должны увидеть напечатанную строчку:
hello notebook
Вы можете чередовать код с комментариями для самодокументирования notebook.
✅ Подумайте минуту, насколько отличается рабочая среда веб-разработчика от среды учёного данных.
Работа с Scikit-learn
Теперь, когда Python настроен в вашей локальной среде и вы уверенно работаете с Jupyter Notebooks, познакомимся с Scikit-learn (произносится «сай» как «сайанс»). Scikit-learn предоставляет обширный API для выполнения задач машинного обучения.
Согласно их сайту, "Scikit-learn — библиотека машинного обучения с открытым исходным кодом, поддерживающая контролируемое и неконтролируемое обучение. Также она предоставляет различные инструменты для подгонки моделей, предобработки данных, выбора моделей и оценки, а также множество других утилит."
В этом курсе вы будете использовать Scikit-learn и другие инструменты для построения моделей машинного обучения, выполняющих так называемые «традиционные задачи машинного обучения». Мы сознательно избегаем нейронных сетей и глубокого обучения, поскольку они лучше раскрыты в нашем будущем курсе «ИИ для начинающих».
Scikit-learn упрощает построение и оценку моделей. Основной акцент сделан на работе с числовыми данными, в библиотеке есть несколько готовых наборов данных для обучения, а также предустановленные модели для экспериментов. Давайте изучим процесс загрузки подготовленных данных и использования встроенного оценщика для создания вашей первой модели машинного обучения в Scikit-learn на простых данных.
Упражнение - ваш первый notebook с 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-й столбец (индекс 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. Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обратиться к профессиональному человеческому переводу. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.






