Как визуализировать набор данных с помощью Seaborn? как создать модель машинного обучения с помощью логистической регрессии? Сила хорошей визуализации.

Введение

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

Вот полное руководство Видео на YouTube, если вы предпочитаете его посмотреть.

Вы можете скачать набор данных ЗДЕСЬ

Вы можете увидеть код GitHub ЗДЕСЬ.

Среда: Google colab

Содержание:

Введение

1. Предварительная обработка данных

2. Классификация с помощью визуализации

3. Классификация с использованием логистической регрессии

4. Визуализация против логистической регрессии (ML)

Заключение

1. Предварительная обработка данных:

Первым шагом является загрузка, чтение и предварительная обработка набора данных. Также нам нужно импортировать необходимые библиотеки.

Там показан образец набора данных. Он состоит из 8 входных признаков, таких как «беременность», «глюкоза», «артериальное давление» и т. д., и 1 выходного признака — «исход», который обозначает, есть ли у пациента диабет или нет.

  • Дважды проверьте, содержит ли набор данных нулевые значения.

  • Проверьте типы данных столбца набора данных. Как видно из результата, все столбцы имеют тип данных int64, так что тут ничего не поделаешь.

  • Проверьте распределение выходных классов. Как видно из результата, в наборе данных есть небольшой дисбаланс, поэтому важно выбрать правильные показатели для оценки результата нашей классификации.

2. Классификация с использованием только визуализации

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

  • оранжевые точки — пациенты с диабетом
  • синие точки — пациенты без сахарного диабета.
g = sns.pairplot(data, hue="Outcome")

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

sns.scatterplot(data['Glucose'],data['Age'],hue=data['Outcome'])

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

data['prediction'] = np.where((data['Glucose']>130),1,0)
data.head()

Результат — это основная истина, тогда как прогноз — это предсказанные значения. На основе этого образца набора данных почти все прогнозы верны. Однако, чтобы иметь более общее представление о том, насколько хорош наш прогноз, мы можем вычислить точность, точность и отзыв. ».

y_test_vis = data['Outcome'].values
y_pred_vis = data['prediction'].values

print("accuracy: ", accuracy_score(y_test_vis,y_pred_vis ))
print("precision: ", precision_score(y_test_vis,y_pred_vis ))
print("recall: ", recall_score(y_test_vis,y_pred_vis ))

Вне[ ]:

accuracy:  0.73828125
precision:  0.6334661354581673
recall:  0.5932835820895522

3. Классификация с использованием логистической регрессии

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

data.drop(columns=['prediction'], inplace=True)
data_f = data.drop(columns=['Outcome']).values
labels = data['Outcome'].values
scaler = MinMaxScaler()

data_f_scaled = scaler.fit_transform(data_f)
X_train, X_test, y_train, y_test = train_test_split(data_f_scaled, labels, test_size=0.2, random_state=42)
LR = LogisticRegression()

LR.fit(X_train,y_train)

y_pred = LR.predict(X_test)
y_pred_prob = LR.predict_proba(X_test)[:,1]
print("accuracy: ", accuracy_score(y_test,y_pred ))
print("precision: ", precision_score(y_test,y_pred ))
print("recall: ", recall_score(y_test,y_pred ))

Вне[ ]:

accuracy:  0.7662337662337663
precision:  0.7111111111111111
recall:  0.5818181818181818

4. Визуализация VS Логистическая регрессия (ML)

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

Заключение

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

Спасибо, что прочитали. Если вы хотите увидеть более подробный анализ, вы можете посмотретьмое YouTube Video

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