Машинное обучение используется перекрестно во многих кругах повсюду. Индустрия социальных услуг не является особым случаем. ИИ может взять на себя основную работу по прогнозированию приближения/отсутствия проблем с опорно-двигательным аппаратом, сердечно-сосудистых заболеваний и некоторых других. Такие данные, когда они ожидаются заблаговременно, могут дать важные знания специалистам, которые затем смогут скорректировать свое определение и лечение в соответствии с предпосылками.
В этой статье я расскажу о проекте, в котором я попытался предвидеть потенциальные сердечные заболевания у людей, используя вычисления машинного обучения. Расчеты включали классификатор K соседей, классификатор опорных векторов, классификатор дерева решений и классификатор случайного леса. Набор данных был взят из Kaggle. Все мое начинание доступно на фундаментальном уровне прогнозирования заболеваний.
Импорт библиотек
Я импортировал несколько библиотек для предприятия:
numpy: для работы с экспонатами
pandas: для работы с записями CSV и фреймами данных
matplotlib: чтобы создавать диаграммы с использованием pyplot, характеризуйте параметры с помощью rcParams и затеняйте их с помощью cm.rainbow.
оповещения: игнорировать все предупреждения, которые могут появляться в блокноте из-за прошлой/будущей девальвации элемента
train_test_split: разделить набор данных на подготовку и тестирование информации.
StandardScaler: для масштабирования каждого из основных моментов с целью лучшей адаптации модели машинного обучения к набору данных.
Затем я импортировал все необходимые алгоритмы машинного обучения.
Импорт набора данных
После загрузки набора данных с Kaggle я сохранил его в своем рабочем каталоге с именем dataset.csv. Затем я использовал read_csv(), чтобы просмотреть набор данных и сохранить его в переменной набора данных.
Прежде чем приступать к какому-либо расследованию, мне просто нужно было ознакомиться с информацией. Таким образом, я использовал технику data().
Как должно быть очевидно из приведенной выше доходности, есть сумма 13 основных моментов и 1 целевой переменной. Кроме того, нет недостающих качеств, поэтому нам не приходится иметь дело с какими-либо недействительными качествами. Затем я использовал стратегию изображения().
набор данных.describe()
Стратегия показала, что масштаб каждого фактора является экстраординарным. Наибольшая оценка возраста составляет 77 лет, а для холестерола — 564 года. Следовательно, для набора данных необходимо выполнить масштабирование ярких моментов.
Понимание данных
Матрица отношений
Во-первых, как насчет того, чтобы мы увидели связную сеть ярких моментов и попытались ее разрушить. Размер фигуры составляет 12 x 8 с использованием rcParams. В этот момент я использовал pyplot, чтобы показать решетку соединений. Используя xticks и yticks, я добавил имена в структуру отношений. colorbar() показывает цветовую полосу для решетки.
Матрица отношений
Трудно понять, что нет ни одного элемента, который имел бы исключительно высокую связь с нашей объективной ценностью. Кроме того, часть основных моментов имеет отрицательную связь с ценностью цели, а часть — положительную.
Гистограмма
Самое приятное в этом виде графиков заключается в том, что для рисования графиков требуется только один заказ, и, следовательно, он дает такой большой объем данных. Просто используйте dataset.hist().
набор данных.hist()
Мы должны исследовать участки. Он показывает, как каждый компонент и признак распространяется в различных пределах, что еще раз подтверждает необходимость масштабирования. Далее, в любом месте, где вы видите отдельные столбцы, это, по сути, означает, что каждый из них на самом деле является четкой переменной. Мы должны разобраться со всеми этими факторами, прежде чем применять машинное обучение. Наши объективные имена имеют два класса: 0 для отсутствия болезни и 1 для инфекции.
Гистограмма для целевого класса
Крайне просто, что набор данных, который мы делаем, должен быть скорректирован. Очень несбалансированный набор данных может сделать всю подготовку модели бессмысленной и в этом смысле бесполезной. Как насчет того, чтобы понять это с помощью модели.
Предположим, у нас есть набор данных из 100 человек с 99 непациентами и 1 пациентом. Ничего не подготавливая и не разбираясь, модель в целом может сказать, что любой новый человек будет неспокойным и будет иметь точность 99%. Тем не менее, поскольку мы все больше стремимся распознать 1 человека, который является пациентом, нам необходимо скорректировать наборы данных с целью, чтобы наша модель действительно обучалась.
Для x-pivot я использовал единственное в своем роде значение () из раздела целей, а затем установил их имя, используя xticks. Для y-pivot я использовал value_count(), чтобы получить качества для каждого класса. Я заштриховал полосы зеленым и красным.
Из графика видно, что классы почти скорректированы, и у нас есть отличная идея продолжить обработку информации.
Обработка данных
Чтобы работать с абсолютными факторами, мы должны разбить каждый прямой сегмент на ложные секции с 1 и 0.
Предположим, у нас есть раздел «Пол» со значениями 1 для мужчин и 0 для женщин. Его следует разделить на два раздела со значением 1, где сегмент будет действительным, и 0, где он будет поддельным. Исследуйте Gist внизу.
Для этого мы используем стратегию get_dummies() от pandas. Далее нам нужно масштабировать набор данных, для которого мы будем использовать StandardScaler. Стратегия fit_transform() для скейлера масштабирует информацию, и мы обновляем сегменты.
Набор данных в настоящее время подготовлен. Мы можем начать с подготовки наших моделей.
Машинное обучение
В этой затее я взял 4 расчета и поменял их разные параметры и подумал о последних моделях. Я разделил набор данных на 67% подготовки информации и 33% проверки информации.
K Классификатор соседей
Этот классификатор ищет классы K ближайших соседей данной информационной точки и, в зависимости от класса доминирующей части, распределяет класс по этой информационной точке. Как бы то ни было, количество соседей может быть разным. Я переставил их с 1 на 20 соседей и определил тестовый балл для каждой ситуации.
В этот момент я строю линейную диаграмму количества соседей и тестовых результатов, полученных для каждой ситуации.
Как должно быть очевидно, мы получили самый высокий результат в 87%, когда количество соседей было выбрано равным 8.
Классификатор опорных векторов
Этот классификатор нацелен на формирование гиперплоскости, которая может изолировать классы настолько, насколько это можно разумно ожидать, изменяя разделение между информационным фокусом и гиперплоскостью. Есть несколько частей, зависящих от того, какая гиперплоскость выбрана. В частности, я попробовал четыре фигуры: прямую, поли, RBF и сигмовидную.
Когда у меня были баллы для каждого, я использовал стратегию радуги, чтобы выбрать различные оттенки для каждого бара и построить визуальную диаграмму баллов, достигнутых каждым.
Как видно из графика, прямая часть сыграла лучше всего для этого набора данных и набрала 83%.
Классификатор дерева решений
Этот классификатор создает дерево выбора, в зависимости от которого он распределяет оценки класса по каждой исходной точке. Здесь мы можем варьировать наибольшее количество основных моментов, которые необходимо учитывать при создании модели. Я ранжирую основные моменты от 1 до 30 (абсолютные основные моменты в наборе данных после включения ложных секций).
Когда у нас будут оценки, мы сможем построить линейную диаграмму и увидеть влияние количества основных моментов на оценки модели.
Из приведенной выше линейной диаграммы видно, что максимальное значение составляет 79 %, и оно достигается для самых ярких моментов, выбранных равными 2, 4 или 18.
Случайный лесной классификатор
Этот классификатор выводит идею деревьев выбора на следующий уровень. Он образует лес из деревьев, где каждое дерево сформировано неравномерным выделением бликов из всех бликов. Здесь мы можем различаться количеством деревьев, которые будут использоваться для предсказания класса. Я вычисляю результаты тестов для более чем 10, 100, 200, 500 и 1000 деревьев.
Затем я наношу эти оценки на справочную диаграмму, чтобы увидеть, какие из них дали наилучшие результаты. Вы можете видеть, что я не сразу установил оценки X как кластер [10, 100, 200, 500, 1000]. Он покажет упорный сюжет от 10 до 1000, который будет сложно разгадать. В соответствии с этим, чтобы решить эту проблему, я первоначально использовал оценки X как [1, 2, 3, 4, 5]. В этот момент я переименовал их, используя xticks.
Взглянув на эталонную диаграмму, мы видим, что самый высокий показатель в 84% был достигнут как для 100, так и для 500 деревьев.
Конец
Мероприятие включало изучение постоянного набора данных по коронарным заболеваниям с подготовкой законной информации. На тот момент были подготовлены и опробованы 4 модели с самыми высокими оценками:
Классификатор соседей K: 87%
Классификатор опорных векторов: 83%
Классификатор дерева решений: 79%
Случайный лесной классификатор: 84%
K Neighbours Classifier набрал лучший результат 87% с 8 соседями.
Премного благодарен за просмотр! Не стесняйтесь делиться своими размышлениями и мыслями.