"Начиная"

Как оценить зарплату с помощью линейной регрессии

Руководство по линейной регрессии с использованием Python для начинающих.

Действительно ли наша зарплата растет с нашим многолетним опытом работы? Хотя на этот вопрос можно ответить, основываясь на нашем общем понимании рынка труда, мы будем использовать простой подход, основанный на данных, чтобы проверить этот факт. Мы будем использовать линейную регрессию, чтобы смоделировать взаимосвязь между размером заработной платы и стажем работы.

Линейная регрессия - это модель, которая предполагает линейную связь между независимой переменной (X) и переменной ответа (y). Мы можем предсказать значение y на основе значения X. В нашем контексте расчетная заработная плата будет нашей переменной ответа (y), поскольку это наше целевое прогнозируемое значение, а годы работы будут нашей объясняющей переменной (X ).

После того, как мы определили объясняющую переменную и переменную ответа в нашем случае, мы будем использовать Python для построения модели линейной регрессии для ответа на наш вопрос.

Необходимые библиотеки Python

Панды - https://pandas.pydata.org/

Numpy - https://numpy.org/

Matplotlib - https://matplotlib.org/

scikit-learn - https://scikit-learn.org/stable/

Github

Оригинальные полные исходные коды, представленные в этой статье, доступны на моем Github Repo. Не стесняйтесь загрузить его (LinearRegression.py), если хотите использовать его для подписки на мою статью.

Получение данных

Данные о зарплате (Salary_Data.csv), которые мы будем использовать для линейной регрессии, можно получить из Kaggle.

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

1. Загрузка данных

Во-первых, мы воспользуемся библиотекой Python Pandas для чтения наших данных CSV.

Строка 1–6: Импортируйте все необходимые библиотеки.

Строка 8: используйте функцию Pandas read_csv, чтобы прочитать файл CSV. Эта функция вернет данные в формате фрейма данных.

Строка 9–10: Извлеките столбцы YearsExperience и Salary и присвойте их переменным X и y соответственно.

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

Перед построением линейной модели нам необходимо подготовить обучающий набор и тестовый набор (часть стандартной процедуры в рабочем процессе машинного обучения). Обучающий набор будет использоваться для обучения модели, тогда как набор тестов будет использоваться для оценки производительности обученной модели при прогнозировании результата на основе невидимых данных.

Мы можем использовать функцию Python scikit-learn train_test_split, чтобы случайным образом разделить наши данные на обучающий и тестовый набор.

Строка 1: выделите 30% всего набора данных в качестве тестового набора и назначьте обучающий набор и тестовый набор четырем переменным соответственно.

3. Преобразование данных

Python scikit-learn принимает только обучающие и тестовые данные в формате двумерного массива. Мы должны выполнить преобразование данных на нашем обучающем наборе и наборе тестов.

Строка 1–2: используйте Numpy reshape function, чтобы преобразовать обучающий набор из одномерного ряда в двухмерный массив.

Строка 3–4. Используйте Numpy reshape function, чтобы преобразовать набор тестов из одномерного ряда в двухмерный массив.

4. Модель обучения

Теперь мы готовы обучать нашу линейную модель.

Строка 1: используйте функцию Scikit-Learn LinearRegression для создания объекта модели.

Строка 2. Подгоните тренировочный набор к модели.

5. Прогнозирование заработной платы с использованием линейной модели.

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

Строка 1: используйте линейную модель, чтобы спрогнозировать зарплату на основе обучающей выборки.

Строка 3–10: Используйте Matplotlib, чтобы создать график для визуализации предсказанных результатов. «Истинные значения» отображаются в виде синих точек на диаграмме, а прогнозируемые значения отображаются в виде прямой линии черного цвета.

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

Теперь нам нужно проверить, может ли линейная модель хорошо работать на нашем тестовом наборе (неизвестные данные).

Строка 1: используйте линейную модель, чтобы спрогнозировать зарплату на основе набора тестов.

Строка 3–10: Используйте Matplotlib, чтобы создать график для визуализации предсказанных результатов. «Истинные значения» отображаются в виде зеленых точек на диаграмме, а прогнозируемые значения отображаются в виде прямой линии черного цвета.

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

6. Оценка модели

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

Мы будем использовать три типа количественных показателей:

  • Среднеквадратичная ошибка - среднее квадратов разницы между истинными и прогнозируемыми значениями. Чем меньше разница, тем лучше производительность модели. Это общий показатель, используемый для регрессионного анализа.
  • Показатель объясненной дисперсии - измерение, позволяющее оценить, насколько хорошо модель может обрабатывать вариации значений в наборе данных. Оценка 1.0 - идеальный результат.
  • Оценка R2 - измерение для проверки того, насколько хорошо наша модель может предсказывать значения на основе набора тестов (неизвестные образцы). Наилучшая оценка - 1.0.

Строка 1–3: Используйте функции Scikit-learn Metrics, чтобы вычислить среднеквадратическую ошибку, объясненную дисперсию и показатель R2 для нашей линейной модели. Мы загружаем функции истинными значениями (набор тестов) и предсказанными значениями.

Если мы выполним вычисление квадратного корня для нашей среднеквадратичной ошибки, мы получим среднее расхождение около 6146,92 доллара, что является довольно низкой ошибкой. Кроме того, оценка дисперсии объяснения и оценка R2 достигли 0,9 выше. Это показывает, что наша линейная модель не переоснащена и может хорошо работать для прогнозирования заработной платы на основе новых данных.

Выводы

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

Хотя это слишком наивно, чтобы предполагать, что заработная плата зависит только от многолетнего опыта работы, это один из отличных примеров, демонстрирующих, как мы можем разработать простую модель линейной регрессии, чтобы показать взаимосвязь между двумя переменными. Фактически, большинство явлений в реальной жизни нелегко объяснить с помощью линейной модели. Однако понимание построения линейной модели является основой для построения сложной модели.

Надеюсь, вам понравилась эта статья.

Если вам понравилась моя статья и вы хотите прочитать больше похожих статей, смело подписывайтесь на Medium. Вы сможете читать неограниченное количество статей от меня и других авторов на Medium. Спасибо за вашу поддержку.

использованная литература

  1. Http://www.stat.yale.edu/Courses/1997-98/101/linreg.htm
  2. Https://machinelearningmaster.com/regression-metrics-for-machine-learning/
  3. Https://www.statisticshowto.com/explained-variance-variation/
  4. Https://en.wikipedia.org/wiki/Coefficient_of_determination