В этом посте мы расскажем, как сделать первый шаг к машинному обучению с помощью простой линейной регрессии.

Что такое линейный?

Во-первых, предположим, что вы делаете покупки в Walmart. Независимо от того, покупаете вы товар или нет, вам придется заплатить 2 доллара за парковочный талон. Каждое яблоко стоит 1,5 доллара, и вам нужно купить (x) яблоко. Затем мы можем заполнить прайс-лист, как показано ниже:

Цену легко предсказать (или рассчитать) на основе значения и наоборот, используя уравнение y = 2 + 1,5x для этого примера или:

с участием:

  • a = 2
  • b = 1.5

Линейная функция имеет одну независимую переменную и одну зависимую переменную. Независимая переменная - x, а зависимая переменная - y.

  • a - постоянный член или точка пересечения оси y. Это значение зависимой переменной, когда x = 0.
  • b - коэффициент независимой переменной. Он также известен как наклон и показывает скорость изменения зависимой переменной.

Почему мы называем это линейным? Хорошо, давайте визуализируем набор данных, который мы получили выше!

Построив все значения стоимости покупок (синяя линия), вы увидите, что все они находятся в одной строке, поэтому мы называем это линейным . В уравнении линейного (y = a + bx) a является независимой переменной. Даже если a = 0 (вам не нужно платить за парковочный талон), строка «Стоимость покупок» сместится вниз, и они все еще будут в строке (оранжевая линия).

Но в реальной жизни все не так просто!

Возьмем другой пример. В компании AB существует таблица распределения заработной платы на основе года опыта, как показано ниже:

«Сценарий такой: вы сотрудник отдела кадров, у вас есть кандидат с 5-летним опытом. Тогда какую самую лучшую зарплату вы должны ему предложить? »

Прежде чем углубиться в эту проблему, давайте сначала нанесем набор данных на график:

Пожалуйста, внимательно посмотрите на эту таблицу. Теперь у нас плохая новость: все наблюдения идут не в линию. Это означает, что мы не можем найти уравнение для вычисления значения (y).

И что теперь? Не волнуйтесь, у нас для вас хорошие новости!

Снова посмотрите на точечную диаграмму перед прокруткой вниз. Вы видите это?

Все точки не находятся на одной линии, НО они находятся в форме линии! Это линейно!

Основываясь на наших наблюдениях, мы можем предположить, что диапазон заработной платы с 5-летним опытом должен находиться в красном диапазоне. Конечно, мы можем предложить нашему кандидату любое число из этого красного диапазона. Но как подобрать ему лучший номер? Пришло время использовать машинное обучение, чтобы спрогнозировать лучшую зарплату для нашего кандидата.

В этом разделе мы будем использовать Python в IDE Spyder, чтобы найти лучшую зарплату для нашего кандидата. Хорошо, давай сделаем это!

Линейная регрессия с Python

Прежде чем двигаться дальше, мы резюмируем 2 основных этапа машинного обучения, как показано ниже:

  1. Обучение
  2. Предсказывать

Хорошо, мы будем использовать 4 библиотеки, такие как numpy и pandas для работы с набором данных, sklearn для реализации функций машинного обучения и matplotlib для визуализации наших графиков для просмотра:

Пояснение к коду:

  • dataset: таблица содержит все значения в нашем CSV-файле
  • X: первый столбец, содержащий массив лет опыта.
  • y: последний столбец, содержащий массив Salary

Затем мы должны разделить наш набор данных (всего 30 наблюдений) на 2 набора: обучающий набор, который используется для обучения, и набор тестов, который используется для тестирования:

Пояснение к коду:

  • test_size=1/3: мы разделим наш набор данных (30 наблюдений) на 2 части (обучающий набор, тестовый набор), и соотношение тестового набора по сравнению с набором данных равно 1/3 (10 наблюдений будут помещены в test set. Вы можете поставить 1/2, чтобы получить 50%, или 0,5, они одинаковы. Мы не должны допускать, чтобы набор тестов был слишком большим; если он слишком большой, у нас не будет данных для обучения Обычно мы выбираем от 5% до 30%.
  • train_size: если мы уже используем test_size, остальные данные будут автоматически присвоены train_size.
  • random_state: это начальное число для генератора случайных чисел. Мы также можем поместить экземпляр класса RandomState. Если мы оставим поле пустым или 0, вместо него будет использоваться экземпляр RandomState, используемый np.random.

У нас уже есть набор поездов и набор тестов, теперь нам нужно построить модель регрессии:

Пояснение к коду:

  • regressor = LinearRegression(): наша обучающая модель, которая реализует линейную регрессию.
  • regressor.fit: в этой строке мы передаем X_train, который содержит значение Годового опыта и y_train, который содержит значения конкретной зарплаты, чтобы сформировать модель. Это тренировочный процесс.

Давайте визуализируем нашу модель обучения и модель тестирования:

После выполнения вышеуказанного кода вы увидите 2 графика в окне консоли:

Сравните два графика, мы увидим, что две синие линии имеют одинаковое направление. Наша модель сейчас пригодна для использования.

Хорошо! У нас уже есть модель, теперь мы можем использовать ее для вычисления (прогнозирования) любых значений X, зависящих от y или любых значений y, зависящих от X. Вот как мы это делаем:

Бинго! Значение y_pred при X = 5 (5-летний опыт работы) составляет 73545,90.

Вы можете предложить своему кандидату 73 545,90 долларов, и это лучшая зарплата для него!

Мы также можем передать массив X вместо одиночного значения X:

И мы можем предсказать X, используя y. Давай попробуем сами!

В заключение, с простой линейной регрессией мы должны сделать 5 шагов, как показано ниже:

  1. Импорт набора данных.
  2. Разделение набора данных на обучающий набор и набор для тестирования (2 измерения X и y для каждого набора). Обычно набор для тестирования должен составлять от 5% до 30% набора данных.
  3. Визуализируйте обучающий набор и набор для тестирования для двойной проверки (вы можете пропустить этот шаг, если хотите).
  4. Инициализация регрессионной модели и ее настройка с использованием обучающего набора (как X, так и y).
  5. Давайте предскажем !!

Ресурсы:

Счастливого обучения каждый день!