Классификация диабета — проблема классификации машинного обучения с учителем
В этой записной книжке я применяю контролируемые классификации машинного обучения к набору данных о диабете. Я стремлюсь определить, есть ли у проверенных данных диабет или нет. Я буду использовать 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 недели мы рассмотрели теоретическую часть алгоритмов классификации, здесь мы применили алгоритмы. Следите за постом на следующей неделе.