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






