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

В предыдущей части статьи (Часть 1) я закончил описанием корреляционной матрицы между различными параметрами и целевой переменной (есть ли у пациента болезнь сердца или нет). Следующий шаг включает в себя использование процесса Label Encoding, где категориальные переменные, такие как пол, наклон, тип_боли в груди и т. д., были преобразованы в числа, а функция .get_dummies() метод используется для создания фиктивных переменных для когортных возрастных групп (например, строки, имеющие значения возраста в возрастной группе от 20 до 40 лет, обозначаются как 1, а остальные равным 0, аналогичным образом строки, имеющие значения возраста в возрастной группе от 40 до 60 лет, обозначаются как 1, а остальные — как 0, и так далее для других возрастных групп).

Затем я создал переменную X для использования в качестве обучающих данных и удалил целевой столбец (переменная y).

X_train, X_test, y_train, y_test = train_test_split(
    X,
    y,
    test_size = .2,
    random_state = 777)
X_train.shape, y_train.shape, X_test.shape, y_test.shape

Фрагмент кода выше показывает, что метод train_test_split() используется для разделения данных на данные обучения и тестирования. Процесс представляет собой метод разделения 80–20%, и у нас есть 242 точки данных (80%) для обучающего набора и 61 (20%) для тестового набора, учитывая, что общее количество точек данных составляет 303.

Затем используется метод StandardScaler(), чтобы преобразовать все функции в масштабированную версию данных, где среднее значение равно 0, а стандартное отклонение равно 1.

Применение моделей машинного обучения для классификации

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

Классификатор логистической регрессии

#Logistic regression classifier and evaluation
lr = LogisticRegression()
lr.fit(X_train, y_train)
lr_pred = lr.predict(X_test)
acc = lr.score(X_test, y_test)
print("LogisticRegression accuracy score is:",acc)
report = classification_report(y_test, lr_pred)
print(report)
cm = confusion_matrix(y_test, lr_pred)
sns.heatmap(cm, annot = True, fmt = "d");

Как мы видим выше, точность модели составляет примерно 87%, а показатели точность и отзыв также выглядят вполне прилично (0,85). (точность) и 0,88 (отзыв) для значений 0 и 1), результаты также хорошо выглядят в матрице путаницы.

Классификатор ближайших соседей

Классификатор K-NN лучше всего работает с 8 соседями, а точность составляет 88%.

В этом случае значения точности и полноты лучше, чем у логистического классификатора.

Классификатор случайного леса

Показатель точности классификатора составляет примерно 82% (0,8196).

Значения точности и полноты не работают так хорошо, как аналоги KNN и логистической регрессии.

Классификатор голосования

Здесь все классификаторы используются вместе как метод ансамбля для достижения наилучших результатов. Из приведенного выше классификатора видно, что классификаторы логистической регрессии, KNN и случайного леса являются лучшими классификаторами с точки зрения точности, воспроизводимости и отзыва. Хотя в основном коде я использовал такие классификаторы, как «Машина опорных векторов», «Усиление градиента» и «Дерево решений», я упоминаю здесь только лучших исполнителей. Ссылка полный код приведена ниже.

Код и результаты представлены ниже.

Точность в этом случае составляет 90 % со всеми объединенными классификаторами.

Заключение

Проект по прогнозированию заболеваний включал различные этапы: от анализа данных до очистки данных, визуализации данных, масштабирования и моделирования с помощью машинного обучения. Это продолжение предыдущей статьи (Часть 1), в которой хорошо объяснены остальные части. Используемые модели машинного обучения: логистическая регрессия, классификатор KNN, классификатор случайного леса и классификатор голосования. Классификатор голосования (точность 90%) работает лучше всех других классификаторов.

Приветствуются любые предложения по вышеописанному проекту. Я изо всех сил старался четко изложить свои мысли в письменной форме (учитывая, что это моя 2-я статья) с минимальными или нулевыми ошибками в плане опечаток, грамматических ошибок или любой в этом роде.

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

У меня есть весь код здесь, если вам интересно узнать больше и создать свой собственный проект, используя ссылку:



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

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .

Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.