Анализ оттока сотрудников направлен на то, чтобы предсказать, кто покинет компанию. В этом анализе мы собираемся использовать вымышленные данные под названием Увольнение и производительность сотрудников HR Analytics, созданные учеными IBM. Вы нашли оригинальный набор данных в Kaggle. Анализ оттока сотрудников аналогичен анализу оттока клиентов, но в основном фокусируется на сотрудниках, а не на клиентах. Данные содержат информацию о демографических данных сотрудников и конкретную информацию, такую ​​как расстояние от дома, должность, удовлетворенность работой, месячная ставка, работа с текущим менеджером, годы работы в компании, время последнего продвижения по службе и так далее. В этом проекте мы собираемся исследовать и проводить исследовательский анализ данных с использованием набора данных HR, а затем мы собираемся подготовить данные для алгоритма машинного обучения. Все анализы вы нашли в моих Kaggle Notebooks, а также в моих репозиториях GitHub.

РАЗРАБОТКА ОСОБЕННОСТЕЙ

У нас есть в общей сложности информация о 1470 сотрудниках с 35 функциями, которые показывают информацию, соответствующую каждому сотруднику. Столбец Увольнение указывает статус сотрудника, показывающий, что сотрудник остался в компании или покинул компанию. В этом столбце 0 означает, что сотрудник все еще работает в компании, а 1 означает, что сотрудник покидает компанию. На основе этих данных мы будем искать закономерность, что если один и тот же профиль людей покидает компанию, и, наконец, мы собираемся предсказать, кто покинет компанию, используя алгоритм ML.

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

  • «Сверхурочная работа» также имеет варианты «Да» и «Нет». Поэтому нам нужно преобразовать этот столбец в 1 и 0.
  • Столбец «Over18» содержит только Y[Да], что означает каждого сотрудника старше 18 лет, поэтому нам не нужна эта информация.
  • «StandardHour» имеет только уникальное значение 80. Поэтому нам не нужен этот столбец.
  • Та же стратегия применима и к столбцу «EmployeeCount», «EmployeeNumber».
  • Уровень работы сильно коррелирует с общим количеством проработанных лет.

В этом проекте мы собираемся использовать морского волка для изоляции, но в качестве примера Plotly я собираюсь построить количество убыли и круговую диаграмму для процента убыли, используя Plotly.

Мы собираемся написать функцию для отдельного исследования категориальных и числовых столбцов и их построения.

В качестве примера этой функции я собираюсь показать здесь несколько графиков, но если вы хотите увидеть весь анализ EDA, вы можете посетить мой «Kaggle» или «GitHub» для всех проектов.

Мы также смотрим на корреляцию числовых столбцов друг с другом, для этого мы собираемся использовать тепловую карту после применения функции core().

Чтобы оценить производительность любой модели машинного обучения, нам нужно протестировать ее на некоторых невидимых данных. Для этого мы использовали перекрестную проверку, которая представляет собой процедуру повторной выборки, используемую для оценки моделей машинного обучения. Этот метод используется для оценки навыков модели машинного обучения на невидимых данных. Все данные случайным образом разбиваются на k сгибов (n_folds=10), затем подгоняются к модели, используя 1 сгиб в качестве теста, а другие — в качестве обучающей выборки моделей. Повторяйте этот процесс до тех пор, пока каждая K-кратность не станет проверочным набором. Затем возьмем среднее значение наших баллов.

correlations = employee_df.coor()
fig, ax = plt.subplots(figsize=(20,20))
sns.heatmap(correlations, annot=True)

  • Ежемесячный доход сильно коррелирует с уровнем работы
  • Ежемесячный доход сильно коррелирует с общим количеством рабочих часов
  • Возраст сильно коррелирует с ежемесячным доходом и общим количеством рабочих лет.
  • Возраст: Возраст сотрудника
    Увольнение: сотрудник, который остался: 0, сотрудник, уволившийся: 1
    BusinessTravel: 'Командировки_редко' 'Командировки_часто' 'Не командировки'
    DailyRate : дневная ставка сотрудника
    Отдел : 'Продажи ' 'Исследования и разработки' 'Человеческие ресурсы'
    Расстояние от дома: расстояние от дома до работы для каждого сотрудника
    Образование: 1: ниже колледжа, 2 :Колледж, 3:Бакалавр, 4;Магистр, 5:Доктор
    Область образования:Науки о жизни, «Другое», «Медицина», «Маркетинг», «Техническая степень», «Управление персоналом». '
    Удовлетворенность окружающей средой: 1: Низкая, 2: Средняя, ​​3: Высокая, 4: Очень высокая
    Пол: Женский или Мужской
    HourlyRate: почасовая ставка сотрудника
    Вовлеченность в работу: 1: низкая, 2: средняя, ​​3: высокая, 4: очень высокая< br /> Джо bLevel
    Роль: «Руководитель отдела продаж» «Научный сотрудник» «Лаборант»
    «Директор по производству» «Представитель в области здравоохранения» «Менеджер»
    « Торговый представитель», «Директор по исследованиям», «Отдел кадров»
    Удовлетворенность работой: 1: Низкая, 2: Средняя, ​​3: Высокая, 4: Очень высокая
    Семейное положение: 'Не замужем' 'Женаты' 'Разведены'
    Ежемесячный доход: месячный доход сотрудника в период с 2094 по 26999.
    Месячная ставка
    NumCompaniesWorked: количество компаний, в которых работал сотрудник до текущей.
    Over18:'Y'
    OverTime:v
    PercentSalaryHike: Процент увеличения зарплаты между % 11–%25.
    Рейтинг эффективности: 1 – низкий, 2 – хороший, 3 – отличный, 4 – выдающийся
    Удовлетворенность отношениями 1: низкий, 2 :Средний, 3 :Высокий, 4 :Очень высокий
    StandardHours: стандартное рабочее время для каждого сотрудника: 80 часов
    StockOptionLevel: классифицируется от 0 до 3 указывает уровень запаса сотрудника
    TotalWorkingYears : общее количество лет работы сотрудника, которое варьируется от 0 до 40 лет.
    TrainingTimesLastYear: время обучения сотрудника за последний год.
    WorkLifeBalance 1: плохо, 2: хорошо, 3: лучше, 4: лучше всего
    YearsAtCompany: общий рабочий год сотрудников в компании, который варьируется от 0 до 40 лет.
    YearsInCurrentRole: текущая должность сотрудника в компании, от 0 до 18 лет.
    YearsSinceLastPromotion: время, когда сотрудник получает последнее повышение по службе, и оно варьируется от 0 до 15 лет.
    YearsWithCurrManager: время работы сотрудника текущий менеджер, и он варьируется от 0 до 17 лет.

СОЗДАЙТЕ НАБОР ДАННЫХ ДЛЯ ТЕСТИРОВАНИЯ И ОБУЧЕНИЯ И ВЫПОЛНИТЕ ОЧИСТКУ ДАННЫХ

КЛАССИФИКАТОР ЛОГИСТИЧЕСКОЙ РЕГРЕССИИ

ОБУЧЕНИЕ И ОЦЕНКА КЛАССИФИКАТОРА СЛУЧАЙНЫХ ЛЕСОВ

КРОС-ВАЛИДАЦИЯ K-FOLDS ДЛЯНЕСКОЛЬКИХ МОДЕЛЕЙ МАШИННОГО ОБУЧЕНИЯ

Вывод

Отличная работа. Поздравляем, потому что мы только шаг за шагом рассмотрели проблему классификации. Я должен отдать должное этой статье. Вы можете найти более интересное исследование, если перейдете к «Kaggle kernels» для этого набора данных. Кроме того, я прошел курс «Наука о данных для бизнес-проекта Udemy» для этого проекта. Вы нашли «моё кадровое портфолио по ссылке».

plt.subplots(figsize=(12,16))
plt.xticks(rotation=45)
sns.boxplot(new_model_data_frame.index, accuracy

В столбцах «Увольнение» указано «Да», если сотрудник уволился с работы, и «Нет», если сотрудник остался в компании. Мы должны преобразовать эти 1 и 0 для использования в модели машинного обучения.

Здесь моя социальная сеть. Linkedin, Github, Twitter

Вот еще один мой проект на сайте Портфолио.

Анализ оттока сотрудников