Особенности в наборе поезда были: -

  1. Обнаружил некоторые выбросы.

Убрал их.

2) Некоторые группы препаратов привели к высокому показателю выживаемости.

3) Психическое состояние пациента и идентификационная ситуация с уходом за пациентом были постоянными на всем протяжении столбца, поэтому эти столбцы были удалены.

4) В столбцах A, B, C, D, E, F, Z было по 1235 пропущенных значений. Для их расчета я сгруппировал каждый столбец в соответствии с идентификатором платежа и вменял недостающие значения в соответствии с режимом.

После этой операции все еще оставалось 684 пропущенных значения, так что это означало, что нулевые значения A, B, C, D, E, F, Z имели только одно вхождение идентификатора пациента, и оно было нулевым.

Чтобы справиться с ними, я рассчитал их с помощью медианы. Он не будет нулевым, если у покупателя есть нулевые значения от A до Z, потому что медиана была рассчитана для всего сгруппированного столбца.

Наконец, отбрасываем столбцы «_missing_», потому что они бесполезны.

5) Столбец Number_of_prev_cond содержал 1235 нулевых значений, поэтому их также вменяла медиана.

6) Пациенты с диагностированным состоянием 20–35 имели более высокую вероятность. выживаемости, но это понимание не помогло модели научиться (проверено по значимости характеристик после первой попытки моделирования).

Функциональная инженерия

  1. Как отмечалось ранее, пациенты, получавшие препараты «DX6», «DX5», «DX4», «DX3», «DX2», DX1, имели более высокую вероятность выживания. Итак, создал функцию, используя это понимание.

2.Patient_Body_Mass_Index - это непрерывная функция и важная функция, поэтому она помечена ярлыками «маленький», «средний», «большой».

3) Исходя из концепции проверки гипотез, я заметил, что курильщик возрастом ›50 имеет более высокий риск, поэтому создал новую функцию, используя это.

4) Общее количество «Number_of_prev_cond», то есть A + B + C + D + E + F + Z для пациента, будет полезной функцией для нашей модели. Итак, создал это.

5) Столбец Treated_with_drugs является категориальным и не имеет меток, поэтому пометите его путем извлечения чисел.

например: - DX3 DX6 DX2 будет 362, «DX» является общим для всех препаратов.

Это будет новая функция, которая будет заменена на Treated_with_drugs.

6) Обозначил столбец Patient_Smoker 0,1,2 и столбец Patient_Rural_Urban 0,1,2.

Выбор функций, обучение модели и окончательные прогнозы

  1. Столбцы Z, F, A были исключены из набора и теста, потому что они не имели большого значения для модели. Наблюдал это с помощью plot_importance из xgboost (после одной попытки моделирования).

2. Идентификатор пациента уникален для каждой строки, и, следовательно, он не будет использоваться при обучении модели, поэтому его также удалили.

3. Не было обнаружено коррелированных независимых признаков.

4. Пробовал различные алгоритмы, такие как xgboost, catboost, lgbm, random forest. Лучшим алгоритмом был xgboost.

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

XGBClassifier (random_state = 50, max_depth = 11, n_estimators = 2000, learning_rate = 0,03)

Спасибо за прочтение!!