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/ru/2-Regression/1-Tools/README.md

24 KiB

Начало работы с Python и Scikit-learn для моделей регрессии

Сводка регрессий в виде скетчноута

Скетчноут от Tomomi Imura

Тест перед лекцией

Этот урок доступен на R!

Введение

В этих четырех уроках вы узнаете, как создавать модели регрессии. Мы скоро обсудим, для чего они нужны. Но прежде чем начать, убедитесь, что у вас есть все необходимые инструменты для работы!

В этом уроке вы научитесь:

  • Настраивать ваш компьютер для локальных задач машинного обучения.
  • Работать с Jupyter Notebook.
  • Использовать 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, пройдя эту коллекцию модулей Learn

    Настройка Python в Visual Studio Code

    🎥 Нажмите на изображение выше, чтобы посмотреть видео: использование Python в VS Code.

  3. Установите Scikit-learn, следуя этим инструкциям. Поскольку вам нужно использовать Python 3, рекомендуется использовать виртуальную среду. Обратите внимание, если вы устанавливаете эту библиотеку на Mac с процессором M1, на указанной странице есть специальные инструкции.

  4. Установите Jupyter Notebook. Вам нужно установить пакет Jupyter.

Ваша среда разработки ML

Вы будете использовать ноутбуки для разработки кода на Python и создания моделей машинного обучения. Этот тип файлов является распространенным инструментом для специалистов по данным, и их можно идентифицировать по суффиксу или расширению .ipynb.

Ноутбуки представляют собой интерактивную среду, которая позволяет разработчику одновременно писать код, добавлять заметки и документацию вокруг кода, что очень полезно для экспериментальных или исследовательских проектов.

ML для начинающих - Настройка Jupyter Notebook для создания моделей регрессии

🎥 Нажмите на изображение выше, чтобы посмотреть короткое видео о выполнении этого упражнения.

Упражнение - работа с ноутбуком

В этой папке вы найдете файл 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 Notebook, давайте также освоимся с Scikit-learn (произносится как sci, как в science). Scikit-learn предоставляет обширный API, который поможет вам выполнять задачи машинного обучения.

Согласно их веб-сайту, "Scikit-learn — это библиотека машинного обучения с открытым исходным кодом, которая поддерживает обучение с учителем и без учителя. Она также предоставляет различные инструменты для подгонки моделей, предварительной обработки данных, выбора и оценки моделей, а также множество других утилит."

В этом курсе вы будете использовать Scikit-learn и другие инструменты для создания моделей машинного обучения для выполнения задач, которые мы называем "традиционным машинным обучением". Мы намеренно избегали нейронных сетей и глубокого обучения, так как они лучше освещены в нашей предстоящей учебной программе "AI для начинающих".

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

Упражнение - ваш первый ноутбук с Scikit-learn

Этот учебник был вдохновлен примером линейной регрессии на веб-сайте Scikit-learn.

ML для начинающих - Ваш первый проект линейной регрессии на Python

🎥 Нажмите на изображение выше, чтобы посмотреть короткое видео о выполнении этого упражнения.

В файле notebook.ipynb, связанном с этим уроком, очистите все ячейки, нажав на значок "мусорной корзины".

В этом разделе вы будете работать с небольшим набором данных о диабете, который встроен в 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 переменными, некоторые из которых включают:

  • возраст: возраст в годах
  • bmi: индекс массы тела
  • bp: среднее кровяное давление
  • s1 tc: Т-клетки (тип белых кровяных клеток)

Этот набор данных включает концепцию "пол" как переменную, важную для исследований о диабете. Многие медицинские наборы данных включают этот тип бинарной классификации. Подумайте немного о том, как такие категории могут исключать определенные части населения из лечения.

Теперь загрузите данные 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 — очень полезный инструмент для этой задачи. Создайте диаграмму рассеяния всех тестовых данных 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. Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.