IIS_2023_1/degtyarev_mikhail_lab_5
2023-12-03 17:07:58 +04:00
..
cli_res.png degtyarev_mikhail_lab_5_is_ready 2023-12-03 17:07:58 +04:00
ds_salaries.csv degtyarev_mikhail_lab_5_is_ready 2023-12-03 17:07:58 +04:00
img.png degtyarev_mikhail_lab_5_is_ready 2023-12-03 17:07:58 +04:00
main.py degtyarev_mikhail_lab_5_is_ready 2023-12-03 17:07:58 +04:00
Readme.md degtyarev_mikhail_lab_5_is_ready 2023-12-03 17:07:58 +04:00

Лабораторная 5

Вариант 9

Задание

Использовать Ласо-регрессию, самостоятельно сформулировав задачу. Оценить, насколько хорошо она подходит для решения сформулированной вами задачи.

Задача:

Можно использовать регрессию для прогнозирования заработной платы на основе опыта работы (experience_level), типа занятости (employment_type), местоположения компании (company_location) и размера компании (company_size).

Описание Программы

Программа представляет собой пример использования Lasso регрессии для прогнозирования заработной платы на основе различных признаков.

Используемые библиотеки

  • pandas: Библиотека для обработки и анализа данных, используется для загрузки и предобработки данных.
  • scikit-learn:

train_test_split: Используется для разделения данных на обучающий и тестовый наборы.

StandardScaler: Применяется для нормализации числовых признаков.

OneHotEncoder: Используется для кодирования категориальных признаков.

Lasso: Линейная модель Lasso для обучения регрессии.

Pipeline: Позволяет объединять шаги предварительной обработки данных и обучения модели в пайплайн.

  • matplotlib: Используется для визуализации коэффициентов модели в виде горизонтальной столбчатой диаграммы.
  • numpy: Использована для работы с числовыми данными.

Шаги программы

Загрузка данных:

Используется библиотека pandas для загрузки данных из файла ds_salaries.csv.

Предварительная обработка данных:

Категориальные признаки ('experience_level', 'employment_type', 'company_location', 'company_size') обрабатываются с использованием OneHotEncoder, а числовые признаки ('work_year') нормализуются с помощью StandardScaler. Эти шаги объединены в ColumnTransformer и используются в качестве предварительного обработчика данных.

Выбор признаков:

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

Разделение данных:

Данные разделены на обучающий и тестовый наборы в соотношении 80/20 с использованием train_test_split.

Обучение модели:

Используется линейная модель Лассо-регрессия, объединенная с предварительным обработчиком данных в рамках Pipeline.

Оценка точности модели:

Вычисляется коэффициент детерминации (R^2 Score) и среднеквадратичная ошибка (Mean Squared Error) для оценки точности модели.

Вывод предсказанных и фактических значений:

Создается DataFrame с фактическими и предсказанными значениями и выводится в консоль.

Визуализация весов (коэффициентов) модели:

Строится горизонтальная столбчатая диаграмма для визуализации весов (коэффициентов) модели.

Запуск программы

  • Склонировать или скачать код main.py.
  • Запустите файл в среде, поддерживающей выполнение Python. python main.py

Результаты

Точность модели составляет всего 39%, что является довольно низким показателем

MSE довольно высок, что указывает на то, что модель не слишком хорошо соответствует данным и допускает ошибки в предсказаниях

Фактические и предсказанные значения: видно, что модель часто недооценивает или переоценивает заработную плату. Например, для индексов 563 и 289 фактическая заработная плата выше, чем предсказанная.

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