Классификация диабета — проблема классификации машинного обучения с учителем

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

Загрузка данных

df.shape
(768, 9)

Описательная статистика

Этот шаг показывает описательную статистику всех числовых столбцов в наборе данных.

df.describe()

ЭДА

Исследовательский анализ данных

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

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 768 entries, 0 to 767
Data columns (total 9 columns):
 #   Column                    Non-Null Count  Dtype  
---  ------                    --------------  -----  
 0   Pregnancies               768 non-null    int64  
 1   Glucose                   768 non-null    int64  
 2   BloodPressure             768 non-null    int64  
 3   SkinThickness             768 non-null    int64  
 4   Insulin                   768 non-null    int64  
 5   BMI                       768 non-null    float64
 6   DiabetesPedigreeFunction  768 non-null    float64
 7   Age                       768 non-null    int64  
 8   Outcome                   768 non-null    int64  
dtypes: float64(2), int64(7)
memory usage: 54.1 KB
sns.countplot(x="Outcome", data=df)
<AxesSubplot:xlabel='Outcome', ylabel='count'>

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

Машинное обучение

x_data.head()

y[1:10]
array([0, 1, 0, 1, 0, 1, 0, 1, 1])

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

Логистическая регрессия — мощный алгоритм, когда у вас есть проблема с бинарной классификацией.

test accuracy 0.7662337662337663

Классификация КНН

Нам нужно выбрать маленькое значение k, но не слишком маленькое, чтобы оно не приводило к переобучению, а большое значение k приводило к недостаточному соответствию. Значение K, которое мы выбираем, должно быть как можно ближе к нашим контрольным точкам. В этом случае мы используем стандартное значение k, которое равно k=3.

11 nn score: 0.7207792207792207

K=11, 12 дает наилучшую точность для нашего случая.

Классификация дерева решений

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

score:  0.7467532467532467

Случайная классификация леса

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

random forest model score:  0.7207792207792207

Машина опорных векторов (SVM)

SVM используется как для задач регрессии, так и для задач классификации. Параметр C в алгоритме SVM имеет значение по умолчанию, равное 1. Если C оставить очень маленьким, это может привести к неправильной классификации, если он слишком большой, это может привести к переоснащению. В результате пробуются разные значения C, чтобы получить наилучшее значение.

Accuracy of SVM:  0.7467532467532467

Наивная байесовская классификация

это вероятностный классификатор, который применяет теорему Байеса с сильным предположением о независимости между признаками. Он работает, определяя диапазон сходства и вычисляя вероятность точек X в признаке A P (A_feature | x)

accuracy of naive bayes:  0.7662337662337663

Сравнение с использованием матрицы путаницы

Ниже я визуализирую все матрицы путаницы для всех классификаторов.

Заключение

Из постов за последние 3 недели мы рассмотрели теоретическую часть алгоритмов классификации, здесь мы применили алгоритмы. Следите за постом на следующей неделе.