КурсоваяМашинное обучениеГод: 2024МУИВ: Московский университет им. С.Ю. Витте
👁 18💼 0

Готовая курсовая: Ансамблевые методы для прогноза зарплат

Загружена: 20.02.2026 20:57

Исследование применения ансамблевых методов (Decision Tree, Random Forest, Gradient Boosting) для прогнозирования зарплат специалистов Data Science на наборе Kaggle. Описаны предобработка (кодирование, масштабирование), обучение моделей и сравнение по MSE и R² — полезно HR и студентам.

Содержание

Оглавление
ВВЕДЕНИЕ	2
1 АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ	5
1.1 Выбор набора данных 	5
1.2. Анализ и очистка набора данных	6
1.3. Обзор ансамблевых методов машинного обучения	8
2 ПРОЕКТИРОВАНИЕ И РЕАЛИЗАЦИЯ	11
2.1. Создание нужных моделей	11
2.2. Формирование обучающей и тестирующей выборок	12
2.3. Обучение моделей и предсказания	13
3 РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ	13
ЗАКЛЮЧЕНИЕ	17
СПИСОК ЛИТЕРАТУРЫ	18

Введение

В этом курсовом проекте мы ответим на вопрос «Можно ли использовать методы ансамблей, и выяснить зарплату специалистов Data Science в зависимости от того, чем они занимаются и их условия труда». Эта курсовая поможет нам понять, как в мире рабочих меняются  зарплаты, и ещё заодно уточним, от чего же зависит зарплата работников, и сделаем выводы о хорошей работы будущего. Эти выводы помогают абитуриентам, студентам, начальникам.
Актуальностью этой работы - потребность анализ данных в области быстрорастущей сферы при помощи методов машинного обучения.  Методы ансамблей («Случайный лес»,, «Повышение градиента» и «Деревья решений») которые применяются для анализа в этой работе, позволяют сделать выводы для определения профессий.
Для того, чтобы узнать заработную плату того или иного специалиста мы будем использовать простые модели. И еще узнаем как зависит зарплата в зависимости от специализации, опыта, региона проживания и т.п.. С увереностью можно сказать, что такой подход будет полезен для HR-менедджеров, агентств по подбору персонала и специалистов рынка труда.
Целью этого проекта является исследование и использование методов машинного обучения, а именно методов ансамблей для того, чтобы создать такую систему, которая смогла бы спрогнозировать, сколько же денег могут заработать специалисты, учитывая их должностные обязанности, опыта работы и способ их найма. И для этого мы проведем оценку полученных результатов и далее уже оптимизируем, а в конце сравнивая разные методы, узнаем какая же модель является самой эффективности.
Задачи работы:
Анализ предметной области и выбор набора данных:
Оценить актуальность задачи прогнозирования заработной платы в контексте современных требований рынка труда.
Описать и подготовить набор данных, который включает характеристики специалистов и их заработную плату.
Предобработка данных и выбор методов машинного обучения:
Произвести очистку и подготовку данных для обучения моделей.
Применить методы кодирования категориальных признаков и масштабирования числовых данных.
Выбрать и обосновать выбор ансамблевых методов машинного обучения, таких как Decision Tree, Random Forest и Gradient Boosting.
Обучение и тестирование моделей:
Обучить модели с использованием различных гиперпараметров и провести оценку их производительности.
Применить метрики качества, такие как среднеквадратическая ошибка (MSE) и коэффициент детерминации (R²), для сравнения эффективности моделей.
Сравнительный анализ результатов:
Сравнить результаты всех моделей и выбрать наиболее эффективную для решения поставленной задачи.
Проанализировать сильные и слабые стороны каждой из моделей, а также предложить пути их улучшения.
Представление результатов и выводы:
Оформить результаты работы с помощью графиков и диаграмм, иллюстрирующих эффективность моделей.
Сделать выводы о применимости ансамблевых методов для прогнозирования заработной платы специалистов.
Работа состоит из введения, трех глав, заключения и библиографии.
В первой главе проводится анализ предметной области, выбор и описание используемого набора данных, а также обоснование выбора методов машинного обучения.
Во второй главе описывается процесс проектирования и реализации моделей, включая предварительную обработку данных, выбор гиперпараметров и обучение моделей.
В третьей главе представлены результаты тестирования моделей, их сравнительный анализ и визуализация прогнозов.
Объем работы составляет 19 страниц, а библиография включает 12 источников.
1 АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
1.1 Выбор набора данных
Данные, которые мы анализируем в этой работе, получены из платформы Kaggle.com, предоставленного сайтом ai-jobs.net Salaries. Этот набор данных содержит информацию о зарплатах специалистов по науке о данных, которую можно использовать для обучения и оценки различных моделей прогнозирования заработной платы. (https://www.kaggle.com/datasets/saurabhbadole/latest-data-science-job-salaries-2024/data)
Набор данных состоит из нескольких столбцов. И очень важно отметить, что  каждый столбец характеризует различные аспекты зарплат специалистов по науке о данных.
import seaborn as sns #Graph library that use matplot in background
import pandas as pd #To work with dataset
import numpy as np #Math library
import matplotlib.pyplot as plt #to plot some parameters in seaborn
df = pd.read_csv('DataScience_salaries_2024.csv')
df
Начало форм
Рис. 1. Набор данных о зарплатах специалистов в области науки о данных.
Год выплаты заработной платы указан в первом столбце, "work_year", содержит информацию о годе выплаты заработной платы. Этот параметр позволяет анализировать изменение заработной платы с течением времени. С помощью этого параметра можно изучить, как изменялась заработная плата с течением времени, и выявить тенденции в динамике заработной платы.
Уровень опыта специалиста на момент выплаты заработной платы отображается во втором столбце "experience_level". Эта опция позволяет вам изучить доход в зависимости от данных сотрудника. уровень опыта. Он разделен на многочисленные категории, включая Entry Level/Junior, Intermediate/Intermediate, Senior Level/Expert и Executive Level/Director.
Тип занятости специалиста, например, контракт, внештатный, полный или неполный рабочий день, отображается в третьем столбце "employment_type". Эта опция дает возможность изучить, как варьируются зарплаты в зависимости от типа работы.
Столбец «job_title» содержит информацию о конкретной должности сотрудника.
Следующий столбец, называемый «зарплата», содержит сумму заработной платы, выплаченной сотруднику за определенный год в столбце «рабочий_год».
Информацию о валюте, в которой выплачивается зарплата в предыдущем столбце, можно найти в «salary_currency».
В седьмом столбце есть запись «salary_in_usd», где отображается информация о зарплате, конвертированная в доллары США на основе денежной деноминации.
Основное место жительства каждого сотрудника указано в столбце «место жительства_сотрудника».
Столбец «remote_ratio» содержит долю удаленной работы, например, 100% удаленной работы, 50% удаленной работы, 0, что означает полностью офисную работу.
В столбце «company_location» хранится информация о местоположении компании, в которой работает специалист.
И самый последний столбец, «company_size», показывает среднегодовую численность работников в каждой организации.
1.2. Анализ и очистка набора данных
Анализ чистоты данных можно провести, если будем использовать следующий блок кода:
df.isna().sum()
Результат этого блока кода показал, что в столбцах нет пустых значений.
Рисунок 2 – результат проверки набора данных на чистоту
Если мы проанализируем еще глубже, то DataFrame показывает следующее:
Рисунок 3 – стандартные метрики исходного набора данных
1.3. Обзор ансамблевых методов машинного обучения
Методы  ансамблевые – это такие стратегии, которые включают воедино неодинаковые модели для того, чтобы точность прогноза была высока. Ввиду этого, чтобы определить оптимальный метод ансамбля для конкретной задачи, нужно проявить глубокие знания.
Ансамблевые методы — это метод машинного обучения, который объединяет несколько фундаментальных моделей для формулировки одной превосходной прогнозной модели. Чтобы улучшить наше понимание, давайте вернемся к фундаментальной цели искусственного интеллекта и созданию структур. Это станет яснее, когда я углублюсь в конкретные случаи и объясню, почему используются техники ансамбля. В основном я использую деревья решений для объяснения ансамблевых методов и их полезности, но помните, что ансамблевые методы включают в себя нечто большее, чем просто деревья решений.
Давайте посмотрим на первый: регрессию повышения градиента.
Повышение градиента — это разновидность метода ансамблевого обучения в машинном обучении. Этот метод постепенно интегрирует дерево решений в структуру прогнозирования, тем самым исправляя неточности предыдущих. В этой статье, поскольку многие вещи влияют друг на друга, градиентное повышение хорошо помогает угадать зарплату.
Рисунок 2 иллюстрирует схематическое представление повышения градиента на каждой итерации. Изучая эту иллюстрацию, становится очевидным, что этот метод представляет собой набор моделей ветвления. Пни решений служат слабыми обучаемыми объектами и реализуются в рамках аддитивной регрессии для прогнозирования предполагаемого результата, а не для построения отдельного дерева. Уменьшение ошибок во время обучения означает поиск лучшей линии или кривой, которая точно соответствует нашим текущим точкам данных.
Рис. 4. Схематическое изображение регрессии градиентного усиления
Для того, чтобы точность прогнозирования увеличилась и уменьшить возможный факт повторного обучения нужно понимать, что градиент для этого будет использовать стохастический подход когда будет выбирать ансамбль обучающих данных. Решение, которое дают деревья, более надежны в отличие от традиционного метода. Так как они на каждом шаге уменьшают число ошибок.
Случайная лесная регрессия.
Стратегия регрессии случайного леса реализуется на коллективном методе, который применияет для того, чтобы решить массив деревьев. Нужно отметить, он очень хорош, если мы обрабатываем больше количество данных, и которые невосприимчивы к повторному обучению.
Рис. 5. Схематическое изображение случайной лесной регрессии
На отдельных подмножестве строится каждая ветвь дерева регрессии случайного, а каждый узел для того, чтобы разветвиться выбирает такой набор признаков, который уникален. Важной частью этого метода является то,  что каждое дерево делает свой собственный прогноз. Затем они объединяются вместе путем усреднения, что приводит к единому решению. Этот метод усреднения улучшает модель Random Forest по сравнению с автономным подходом Decision Tree: повышает точность, а также снижает переобучение.
Прогноз Random Forest Regressor основан на усреднении прогнозов по всем отдельным деревьям в лесу.
Регрессия дерева решений
Эта модель использует деревья решений для прогнозирования значений целевой переменной. Она проста в интерпретации и может быть эффективна при анализе данных о зарплатах.
Рис. 6. Схематическое изображение регрессии дерева решений
Деревья решений направлены на выявление описательных признаков, которые предлагают больше всего «информации» о целевом признаке. Впоследствии набор данных разделяется на основе значений этих признаков, чтобы гарантировать, что полученные поднаборы данных демонстрируют как можно большую чистоту с точки зрения значений целевых признаков. Описательный признак, который дает самые чистые значения целевых признаков, считается наиболее информативным. Этот итеративный процесс будет продолжается пока не будет выполнено условие критерия остановки, после чего алгоритм достигает конечных узлов.
Конечные узлы содержат прогнозы, сгенерированные для новых экземпляров запросов, представленных обученной модели. Эта возможность прогнозирования вытекает из способности модели различать базовую структуру обучающих данных. В результате модель может, при определенных предположениях, предсказывать целевое значение признака (или класс) невидимых экземпляров запросов.
Дерево решений в основном состоит из корневого узла, внутренних узлов и конечных узлов, которые затем соединены ветвями.
Дальше в этой работе будут применены методы и модели такие как  Random Forest Regression, Gradient Boosting Regression, Decision Tree Regression.
2 ПРОЕКТИРОВАНИЕ И РЕАЛИЗАЦИЯ
2.1. Создание нужных моделей
Кокда создается модель, сперва нам нужно будет определить гиперпараметры. И для пусковых вариантов моделей, нами должны были быть выбраны значения гиперпараметров.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style("darkgrid")
%matplotlib inline
from sklearn.preprocessing import LabelEncoder, StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor
from sklearn.metrics import mean_squared_error, r2_score
# Drop unnecessary columns
data = df.drop(['employee_residence', 'company_location', 'salary_currency','salary'], axis=1)
# Encode categorical variables
cat_cols = ['experience_level', 'employment_type', 'job_title', 'company_size']
label_encoders = {}
for col in cat_cols:
label_encoders[col] = LabelEncoder()
data[col] = label_encoders[col].fit_transform(data[col])
scaler = StandardScaler()
data['remote_ratio'] = scaler.fit_transform(data[['remote_ratio']])
# Split the data into features (X) and target variable (y)
X = data.drop('salary_in_usd', axis=1)
y = data['salary_in_usd']
# Split the data into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
X_train.shape,X_test.shape,y_train.shape,y_test.shape
Для начальных версий моделей выбраны следующие гиперпараметры:
Decision Tree Regressor:
- `max_depth=10`: Устанавливает максимальную глубину дерева. Это ограничение предотвращает переобучение на тренировочных данных и помогает модели захватывать общие закономерности в данных.
Random Forest Regressor:
- `n_estimators=100`: Количество деревьев в ансамбле. Увеличение количества деревьев обычно повышает производительность, но также увеличивает время обучения.
- `max_depth=10`: Глубина деревьев в лесу. Это аналогично параметру для одиночного дерева, но применяется ко всем деревьям в ансамбле.
Gradient Boosting Regressor:
- `n_estimators=100`: Количество итераций (деревьев) в процессе обучения. Каждое дерево добавляется к ансамблю, чтобы уменьшить ошибку предыдущих.
- `learning_rate=0.1`: Скорость обучения. Определяет вес каждого дерева в ансамбле. Меньшие значения замедляют процесс обучения, но могут улучшить итоговую производительность.
- `max_depth=5`:     Максимальная глубина деревьев, используемых в процессе бустинга. Более глубокие деревья могут захватывать сложные закономерности, но увеличивают риск переобучения.
Эти гиперпараметры выбраны как стартовые значения, чтобы сбалансировать сложность модели и её способность обобщать данные. Установление ограничений, таких как `max_depth` и `learning_rate`, помогает избежать переобучения и обеспечивает базовую производительность моделей.
В дальнейшем, эти гиперпараметры могут быть оптимизированы с использованием методов подбора параметров, например, `GridSearchCV` или `RandomizedSearchCV`, для улучшения производительности моделей.
2.2. Формирование обучающей и тестирующей выборок
Для начала удалим столбцы, которые не имеют непосредственного значения для модели.
data = df.drop(['employee_residence', 'company_location', 'salary_currency','salary'], axis=1)
Выделяем в переменную X все признаки, кроме целевой переменной salary_in_usd, а саму целевую переменную помещаете в Y:
X = data.drop('salary_in_usd', axis=1)
y = data['salary_in_usd']
С использованием функции train_test_split данные делятся на обучающую и тестовую выборки. 20% данных отводятся под тестирование:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
2.3. Обучение моделей и предсказания
decision_tree_model = DecisionTreeRegressor(max_depth=10)
random_forest_model = RandomForestRegressor(n_estimators=100, max_depth=10)
gradient_boosting_model = GradientBoostingRegressor(n_estimators=100, learning_rate=0.1, max_depth=5)
def predict_salary(model, X_train, y_train, X_test, y_test):
# Model training
model.fit(X_train, y_train)
# Model evaluation
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
return mse,r2
decision_tree_mse,decision_tree_r2 = predict_salary(decision_tree_model, X_train, y_train, X_test, y_test)
print("Decision Tree Regression:")
print("R-squared:", decision_tree_r2)
print("MSE:", decision_tree_mse)
3 РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ
# Calculate the MSE and R-squared values using the predict_salary function
decision_tree_mse, decision_tree_r2 = predict_salary(decision_tree_model, X_train, y_train, X_test, y_test)
# Round the MSE to the nearest thousand
rounded_mse = round(decision_tree_mse, -3)
# Output the rounded MSE and R-squared
print("Decision Tree Regression:")
print("R-squared:", decision_tree_r2)
print("MSE, rounded to nearest 1000:", rounded_mse)
random_forest_mse, random_forest_r2 = predict_salary(random_forest_model, X_train, y_train, X_test, y_test)
print("Random Forest Regression:")
print("R-squared:", random_forest_r2)
print("MSE:", random_forest_mse)
gradient_boosting_mse, gradient_boosting_r2 = predict_salary(gradient_boosting_model, X_train, y_train, X_test, y_test)
print("Gradient Boosting Regression:")
print("R-squared:", gradient_boosting_r2)
print("MSE:", gradient_boosting_mse)
Результаты регрессии дерева решений:
R-квадрат: 0,9834514092859885
МФБ: 79377857.12737547
На основании результатов, полученных методом машинного обучения Decision Tree Regression, можно с уверенностью сказать, что данные, предсказанные моделью, очень хорошо совпадают с реальными данными (рисунок 9). Об этом свидетельствуют коэффициент детерминации (R-squared) и среднеквадратическая ошибка (MSE). Коэффициент детерминации (R-squared) составляет примерно 0,983, что означает, что около 98,3% заработных плат можно объяснить с помощью функции.
Среднеквадратическая ошибка (MSE) модели составляет примерно 79377857,13. Учитывая размер заработной платы, эта цифра незначительна. Это означает, что модель с высокой точностью предсказывает заработную плату на основе имеющихся признаков.
Рис. 7. Графическое представление фактических и прогнозируемых значений с помощью регрессии дерева решений
Результаты регрессии случайного леса:
R-квадрат: 0,9782707942784503
МФБ: 104227472.72347079
На основании результатов, полученных методом машинного обучения Random Forest Regression, можно также сказать, что данные, предсказанные моделью, очень хорошо совпадают с реальными данными, но менее эффективны по сравнению с предыдущим методом (рисунок 10). Об этом свидетельствуют коэффициент детерминации (R-squared) и среднеквадратическая ошибка (MSE). Коэффициент детерминации (R-squared) составляет примерно 0,978, что означает, что около 97,8% заработных плат можно объяснить с помощью функции.
Среднеквадратическая ошибка (MSE) модели составляет приблизительно 104227472,72. Учитывая объем заработной платы, эта цифра незначительна. Это означает, что модель предсказывает заработную плату с высокой точностью.
Рис. 8. Графическое представление реальных и прогнозируемых значений для Случайный лес Регрессия
Регрессия с усилением градиента результаты:
R-квадрат: 0,9834463846373428
МФЭ: 79401958.62636131
Рисунок 9 показывает, насколько предсказанные “данными модели” на самом деле хорошо соответствуют реальным данным, если полагаться на результат работы алгоритма машинного обучения Gradient Boosting Regression. Это обусловлено величинами коэффициента детерминации или r-квадрат и среднеквадратической ошибки, или MSE. Коэффициента детерминации равен приблизительно 0,983. Это означает, что около 98,3% “зарплаты” могут быть объяснены с помощью функции. Среднеквадратическая ошибка модели — примерно.79401958,63. Учитывая наличный объем “зарплат”, она невелика. Это, в свою очередь, означает, что “зарплата” предсказывается с высокой точностью.
Рис. 9. Графическое представление реальных и прогнозируемых значений.

Заключение

Таким образом, при этой работе была построена ансамблевая модель, решающая поставленную задачу в предметной области, то есть прогноз зарплаты специалистов. С ее помощью эффективно строится прогноз заработной платы для множества факторов, как то опыт, должность, тип занятости, а также другие профессиональные характеристики. В итоге использование таких ансамблевых методов как Random Forest, Gradient Boosting и Decision Tree, при которых комбинированы достоинства нескольких базовых моделей, значительно улучшает точность прогноза.
Оценка эффективности этой работы показала высокие показатели качества ансамблевых методов. Коэффициент детерминации модели основанной на деревьях принял значение 98.3%, что свидетельствует о ее высокой точности предсказаний и способности объяснения существенной части дисперсии заработной платы. Модель Random Forest продемонстрировала схожие результаты с немного худшей эффективностью, а Gradient Boosting показал также хорошие результаты и превзошел свою конкуренцию по устойчивости к переобучению.
Чтобы улучшение модели работы, применение следующих способов:
- выбор гиперпараметров – в каждой модели подбирались параметры, к примеру глубина деревьев, количество деревьев в ансамбле и скорость обучения, что позволило добиться наилучшей точности прогноза.
- предобработка данных – важным этапом было масштабирование данных и кодирование категориальных признаков, что придало результатам всеобъемлющего анализа разнообразию
- кросс-валидация – метод кросс-валидации снизил риск переобучения и увеличил стабильность модели.
В результате работы можно сказать, что ансамблевые методы машинного обучения могут быть применены эффективно в анализе и прогнозировании зарплат в различных отраслях. Однако дальнейшее исследование и оптимизация работы модели может привести к ее улучшению и тем точности предсказаний.

Список литературы

Журнал интеллектуального производстваhttps://doi.org/10.1007/s10845-020-01567-0 Статья -2 автора, в том числе: Иванна Батуринская -Прогнозирование отклонений геометрии деталей, изготовленных методом аддитивного производства: сравнение линейной регрессии с алгоритмами машинного обучения.
2. Амира Мохамед, Шахири Вахида, Хусейн Нурайни Абдул Рашид. Обзор прогнозирования успеваемости учащихся с использованием методов интеллектуального анализа данных», Procedia Computer Science. 2015;72:414-422.
3. Кижаккетхоттам. «Модель прогнозирования успеваемости студентов с использованием дерева решений и нечеткого генетического алгоритма», Procedia Technology. 2016;25:326-332
4. Хашмия Хамса, СимиИндирадеви Джубилант Дж., Кижаккетхоттам. Модель прогнозирования успеваемости студентов с использованием дерева решений и нечеткого генетического алгоритма", Procedia Technology. 2016;25:326-332.
5. SM Abdullah Al Shuaeb, Shamsul Alam, Md. Mizanur Rahman и Md. Abdul Matin, «Прогнозирование успеваемости студентов политехнического университета на основе использования глубокой нейронной сети», в Asian Journal of Research in Computer Science, 12(4): 1-11, 2021; Статья № AJRCOS.77267
6. Сиварам, М. Моделирование ценовых тенденций на тиковую древесину с использованием статистических и искусственных нейронных сетей.Электронный журнал прикладной статистики и анализа.2014,7, 180–198.
7. Google Colab [Онлайн]. Доступно:https://colab.research.google.com/
8. Scikit-learn: машинное обучение на Python.https://scikit-learn.org/stable/
9. Neptun.ai: Регрессия случайного леса: когда она дает сбой и почему?https://neptune.ai/blog/random-forest-reprofit-when-does-it-fail-and-why
10. Средний: регрессия случайного леса.https://levelup.gitconnected.com/random-forest-reгрессия-209c0f354c84
11. Python-course.eu: 31. Деревья решений в Python.https://python-course.eu/machine-learning/decision-trees-in-python.php
12. Средний: Основы машинного обучения: Регрессия дерева решений.https://towardsdatascience.com/machine-learning-basics-decision-tree-reгрессия-1d73ea003fda

Подробное описание

📘 О чем эта работа

Курсовая посвящена применению ансамблевых методов машинного обучения для прогнозирования заработной платы специалистов в области Data Science. Объект исследования — записи набора 'DataScience_salaries_2024' (Kaggle / ai-jobs.net Salaries). В работе анализируются связки признаков: 'work_year', 'experience_level', 'employment_type', 'job_title', 'remote_ratio', 'company_size' и целевая переменная 'salary_in_usd'.

📚 Что внутри

В тексте подробно описаны этапы подготовки и реализации моделей, приведён фрагмент кода на Python (pandas, scikit-learn, seaborn, matplotlib). Приведены конкретные шаги предобработки: удаление столбцов 'employee_residence', 'company_location', 'salary_currency', 'salary', кодирование категорий через LabelEncoder для 'experience_level', 'employment_type', 'job_title', 'company_size' и масштабирование 'remote_ratio' через StandardScaler. Разделы содержат:

  • Описание набора: наличие полей work_year, experience_level, employment_type, job_title, salary_in_usd, salary_currency, employee_residence, remote_ratio, company_location, company_size.
  • Подготовка выборок: разбиение на X и y, train_test_split(test_size=0.2, random_state=42).
  • Реализация моделей: DecisionTreeRegressor(max_depth=10), RandomForestRegressor(n_estimators=100, max_depth=10), GradientBoostingRegressor(n_estimators=100, learning_rate=0.1, max_depth=5).
  • Оценка качества: вычисление MSE и R² для каждой модели и визуализация фактических и прогнозных значений.
  • Таблицы и графики: сводные метрики по моделям и графики реальных vs предсказанных зарплат (R² и MSE приведены в тексте).

📊 Для кого подходит

Полезно студентам прикладной информатики и направлениям, связанным с машинным обучением, а также HR-аналитикам и аналитикам по подбору персонала, которые хотят применять модели для первичной оценки диапазонов зарплат по роли, опыту и формату занятости.

✨ Особенности

Конкретика работы: использован реальный Kaggle-набор 'DataScience_salaries_2024.csv'; приведены имена столбцов и точные шаги предобработки; указаны стартовые гиперпараметры моделей и их численные результаты:

  • Decision Tree: R² ≈ 0.98345, MSE ≈ 79 377 857.
  • Random Forest: R² ≈ 0.97827, MSE ≈ 104 227 472.
  • Gradient Boosting: R² ≈ 0.98345, MSE ≈ 79 401 958.

В разделе рекомендаций описаны пути улучшения: подбор гиперпараметров (GridSearchCV/RandomizedSearchCV), кросс-валидация, расширенное фиче-инжиниринг и дополнительная очистка категорий job_title.

❓ Частые вопросы

Подойдет ли для моего ВУЗа?
Структура соответствует требованиям курсовой: введение, три главы, заключение и список литературы; есть практическая часть с реализацией на Python.

Можно адаптировать?
Да — легко адаптируется: можно заменить набор данных, изменить список признаков, выполнить дополнительную нормализацию и оптимизацию гиперпараметров.