Это вторая часть предыдущей статьи, в которой добавлены этапы масштабирования и моделирования машинного обучения для классификации точек данных на наличие или отсутствие заболеваний сердца.
В предыдущей части статьи (Часть 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 .
Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.