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

# 100DaysOfMLCode # 100ProjectsInML

Лучший способ научиться чему-либо - это работать над примерами проектов. Каким бы простым ни был проект, он помогает мне лучше понять концепции. Так что я буду работать над небольшими мини-проектами в рамках этого учебного путешествия.

Есть сотни отличных ресурсов, которые помогут вам начать работу. Я наткнулся на этот курс машинного обучения от А до Я на Udemy, и в первые несколько недель я буду рассматривать эти примеры.

Сегодня я рассмотрю «Простую линейную регрессию».

Набор данных

Сначала давайте посмотрим на набор данных. Это Salary_Data.csv, его можно найти здесь.
В нем 2 столбца - Годы опыта и Зарплата для 30 сотрудников в компании. Итак, в этом примере мы обучим модель простой линейной регрессии, чтобы узнать корреляцию между количеством лет опыта каждого сотрудника и их соответствующей зарплатой. Как только модель будет обучена, мы сможем делать некоторые примерные прогнозы.

Ниже представлен набор данных.

Цель проекта

Мы должны спрогнозировать зарплату сотрудника с учетом того, сколько лет он имеет.

Итак, приступим.

Шаг 1. Загрузите набор данных

Ниже приведен фрагмент кода для загрузки набора данных.
Мы будем использовать фрейм данных pandas.
Здесь X - независимая переменная, которая представляет собой «Годы опыта»
, а y - зависимая переменная, которая является «Зарплатой».

Итак, для X мы указываем

dataset.iloc[:, :-1].values

что просто означает взять все строки и все столбцы, кроме последнего

А для y указываем

dataset.iloc[:, 1].values

что просто означает брать все строки и только столбцы с индексом 1 - в индексах python начинаются с 0, поэтому индекс 1 здесь второй столбец, который является зарплатой

Ниже приведен пример снимка экрана X и y.

Шаг 2. Разделите набор данных на обучающий набор и тестовый набор.

Затем нам нужно разделить набор данных на обучение и тестирование. Мы будем использовать обучающий набор данных для обучения модели, а затем проверим производительность модели на тестовом наборе данных.

Для этого мы будем использовать метод train_test_split из библиотеки model_selection
Мы предоставляем test_size 1/3, что означает, что набор тестов будет содержать 10 наблюдений, а обучающий набор будет содержать 20 наблюдений
random_state = 0 требуется только в том случае, если вы хотите сравнить свои результаты с моими.

Ниже приведен пример снимка экрана X_train, y_train, X_test и y_test.

Шаг 3. Подгоните модель простой линейной регрессии к обучающей выборке

Это очень простой шаг. Мы будем использовать класс LinearRegression из библиотеки sklearn.linear_model. Сначала мы создаем объект класса LinearRegression и вызываем метод fit, передавая X_train и y_train.

Шаг 4: спрогнозируйте набор тестов

Используя регрессор, который мы обучили на предыдущем шаге, теперь мы будем использовать его для прогнозирования результатов набора тестов и сравнения прогнозируемых значений с фактическими значениями.

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

Давайте сравним и посмотрим, насколько хороша наша модель. Как видно на скриншоте ниже - наша базовая модель неплохо справилась.

Если мы возьмем первого сотрудника - фактическая зарплата составляет 37731, а наша модель предсказала 40835,1 - что неплохо. Некоторые прогнозы ошибочны, но некоторые довольно близки.

Шаг 5 - Визуализация обучающей выборки

Давайте визуализируем результаты.
Сначала мы построим фактические точки данных обучающего набора - X_train и y_train.

plt.scatter(X_train, y_train, color = ‘red’)

Затем мы построим линию регрессии, которая представляет собой прогнозируемые значения для X_train.

plt.plot(X_train, regressor.predict(X_train), color=’blue’)

Шаг 6 - Визуализация набора тестов

Давайте визуализируем результаты теста.
Сначала построим фактические точки данных обучающего набора - X_test и y_test.

plt.scatter(X_test, y_test, color = ‘red’)

Затем мы построим линию регрессии - такую ​​же, как указано выше.

plt.plot(X_train, regressor.predict(X_train), color=’blue’)

Шаг 7 - Сделайте новые прогнозы

Мы также можем делать совершенно новые прогнозы для точек данных, которых нет в наборе данных. Как человеку с 15-летним стажем

The predicted salary of a person with 15 years experience is [167005.32889087]

Вот полный исходный код.