# Лабораторная 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` ### Результаты ![](img.png) ![](cli_res.png) Точность модели составляет всего 39%, что является довольно низким показателем MSE довольно высок, что указывает на то, что модель не слишком хорошо соответствует данным и допускает ошибки в предсказаниях Фактические и предсказанные значения: видно, что модель часто недооценивает или переоценивает заработную плату. Например, для индексов 563 и 289 фактическая заработная плата выше, чем предсказанная. Изменение alfa не особо улучшает общую картину, поэтому, можно сделать вывод, что следует выбрать другой алгоритм.