Доступ к качественному здравоохранению и врачам всегда был проблемой в развивающихся странах и отдаленных регионах. Для решения таких проблем разработано это медицинское веб-приложение. Данные о здравоохранении подавались в обучающие модели машинного обучения и механизмы для прогнозного моделирования. Точность этих моделей прямо пропорциональна полученному ими обучению. Эти модели смогут намного раньше предсказать потенциальные риски для здоровья пациента, чтобы они могли принять профилактические меры и прожить долгую здоровую жизнь.
Это веб-приложение для здравоохранения доступно для доступа по данной ссылке - https://healthcare-web-application.herokuapp.com/

Часть I: Болезнь сердца

Заболевание - это неестественное заболевание, которое отрицательно влияет на функциональное состояние организма и обычно связано с определенными признаками болезни. По данным Всемирной организации здравоохранения (ВОЗ), болезни сердца и инсульт являются самыми серьезными убийцами в мире и остаются ведущими причинами смерти во всем мире за последние 15 лет. В направлении прогнозирования сердечных заболеваний машинное обучение может предоставить замечательные функции, которые упрощают идентификацию невидимых закономерностей, в конечном итоге предоставляя клиническую информацию, которая помогает врачам в планировании и оказании помощи.
Набор данных по сердечным заболеваниям был взят из Kaggle. Эта база данных содержит 76 атрибутов, но все опубликованные эксперименты относятся к подмножеству из 14 из них. Всего в нем 303 строки и 14 столбцов, в 165 из которых указано сердечное заболевание.
Источник данных: Набор данных о сердечных заболеваниях.

Импортировать библиотеки

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

Загрузите данные

df=pd.read_csv('heart_disease.csv')
print(df.shape)
print('\n')
df.head()

df.info()

df.describe()

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

plt.figure(figsize=(14,10))
sns.heatmap(df.corr(), annot=True)

sns.set_style('whitegrid')
sns.countplot(x='target',data=df,palette='RdBu_r')

sns.set_style('whitegrid')
sns.countplot(x='target',hue='sex',data=df)

plt.figure(figsize=(6, 4))
sns.boxplot(x='sex',y='age',data=df,palette='winter')

df['age'].hist(bins=20,color='darkred',alpha=0.7)

Тренировка тестового сплита

X=df.drop(['target', 'fbs', 'chol'], axis=1)
#X=df.drop('target', axis=1)
y=df['target']
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42)
from sklearn.metrics import accuracy_score

Масштабирование

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

Постройте модель с помощью классификатора упаковки

from sklearn.ensemble import BaggingClassifier
bagg = BaggingClassifier(n_estimators=100, random_state=42)
bagg.fit(X_train, y_train)

y_pred_bagg=bagg.predict(X_test)
score=accuracy_score(y_test, y_pred_bagg)

Сохранить модель

import pickle
pickle_out=open("heartdisease.pkl", "wb")
pickle.dump(bagg, pickle_out)
pickle_out.close()

Часть II: Заболевание печени

Заболевание печени - это любое нарушение функции печени, вызывающее заболевание. Печень отвечает за многие важные функции в организме, и в случае заболевания или травмы потеря этих функций может нанести значительный ущерб организму. Число пациентов с болезнью печени постоянно увеличивается из-за чрезмерного употребления алкоголя, вдыхания вредных газов, приема зараженной пищи, солений и лекарств.
Этот набор данных содержит 416 историй болезни пациентов с печенью и 167 историй болезни пациентов без печени, собранных на севере К востоку от Андхра-Прадеша, Индия. Столбец Набор данных представляет собой метку класса, используемую для разделения групп на пациентов с печенью (заболевание печени) или нет (без заболевания). Этот набор данных содержит 441 историю болезни мужчин и 142 истории болезни женщин.
Источник данных: Набор данных о заболеваниях печени

Импортировать библиотеки

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

Загрузите данные

df=pd.read_csv('liver_disease.csv')
df

df.info()

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

df['Disease']=df['Disease'].apply(lambda x: 0 if x==2 else 1)
print(df['Disease'].value_counts())

sns.set_style('whitegrid')
sns.countplot(x='Disease',data=df,palette='RdBu_r')

sns.set_style('whitegrid')
sns.countplot(x='Disease',hue='Gender',data=df)

df['Gender']=df['Gender'].apply(lambda x: 1 if x=='Female' else 0)
plt.figure(figsize=(12,8))
sns.heatmap(df.corr(), annot=True, cmap='viridis')

Тренировка тестового сплита

X=df.iloc[:, :-1]
y=df['Disease']
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42)

Постройте модель с классификатором случайного леса

from sklearn.ensemble import RandomForestClassifier
rf= RandomForestClassifier(n_estimators=50,random_state=42)
rf.fit(X_train, y_train)

from sklearn.metrics import accuracy_score
y_pred_rf=rf.predict(X_test)
score=accuracy_score(y_test, y_pred_rf)

Сохранить модель

import pickle
pickle_out=open("liverdisease.pkl", "wb")
pickle.dump(rf, pickle_out)
pickle_out.close()

Часть III: Рак груди

Рак груди может возникать у женщин и редко у мужчин. Симптомы рака груди включают уплотнение в груди, кровянистые выделения из соска и изменения формы или текстуры соска или груди. Его лечение зависит от стадии рака. Это может быть химиотерапия, лучевая, гормональная терапия и хирургическое вмешательство.
Набор данных был взят из репозитория машинного обучения UCI. Основная цель анализа - провести классификацию опухолей на доброкачественные (B) или злокачественные (M). Доброкачественная опухоль - это опухоль, которая не проникает в окружающие ткани и не распространяется по телу. Злокачественная опухоль - это опухоль, которая может поражать окружающие ткани или распространяться по всему телу. Этот набор данных состоит из 569 строк и 33 столбцов.
Источник данных: Набор данных о раке молочной железы

Импортировать библиотеки

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

Загрузите набор данных

df=pd.read_csv('BreastCancer_data.csv')
print(df.shape)
df.head()

df.info()

df.describe()

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

# Count plot of the target variable
sns.set_style('whitegrid')
sns.countplot(x='diagnosis', data=df)

# Convert categorical variable into dummy/indicator variables
# 1 represents malignant(M) and 0 represents benign(B)
df=pd.get_dummies(data=df, columns=['diagnosis'], drop_first=True)
# drop irrelevant features
df=df.drop(['id'], axis=1)
# HeatMap
plt.subplots(figsize=(20,18))
sns.heatmap(df.corr(), annot=True, linewidths=0.5)

df.columns

X=df.drop(['diagnosis_M', 'fractal_dimension_mean', 'texture_se', 'smoothness_se', 'symmetry_se', 'fractal_dimension_se', 'radius_mean', 'area_mean', 'radius_worst',
       'perimeter_worst', 'area_worst', 'perimeter_se', 'area_se'], axis=1)
y=df['diagnosis_M']

Поезд-Тест Сплит

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

Постройте модель с классификатором упаковки

from sklearn.ensemble import BaggingClassifier
bagg = BaggingClassifier(n_estimators=100, random_state=42)
bagg.fit(X_train, y_train)

y_pred_bagg=bagg.predict(X_test)
score=accuracy_score(y_test, y_pred_bagg)

Сохранить модель

import pickle
pickle_out=open("breastcancer.pkl", "wb")
pickle.dump(log_r, pickle_out)
pickle_out.close()

Часть IV: Малярия

Малярия - опасное для жизни заболевание, вызываемое паразитами, которые передаются людям через укусы инфицированных самок комаров Anopheles. Это предотвратимо и излечимо. Тяжесть малярии зависит от вида плазмодия. Симптомами являются озноб, лихорадка и потоотделение, обычно возникающие через несколько недель после укуса.
Набор данных содержит в общей сложности 27 558 изображений ячеек с одинаковыми экземплярами паразитированных и неинфицированных клеток.
Источник данных: Набор данных по малярии

Часть V: пневмония

Пневмония - это воспалительное заболевание легких, поражающее в первую очередь небольшие воздушные мешочки, известные как альвеолы. Симптомы обычно включают некоторую комбинацию продуктивного или сухого кашля, боли в груди, лихорадки и затрудненного дыхания. Тяжесть состояния варьируется.
Рентгеновские снимки грудной клетки (передне-задние) были выбраны из ретроспективных когорт педиатрических пациентов в возрасте от одного до пяти лет из Медицинского центра женщин и детей Гуанчжоу, Гуанчжоу. Все рентгеновские снимки грудной клетки выполнялись в рамках обычного клинического ухода за пациентами. Для анализа рентгеновских снимков грудной клетки все рентгенограммы грудной клетки первоначально проверялись для контроля качества путем удаления всех низкокачественных или нечитаемых сканированных изображений. Затем диагнозы для изображений были оценены двумя опытными врачами, прежде чем они были допущены к обучению системе ИИ. Чтобы учесть любые ошибки в выставлении оценок, набор оценок был также проверен третьим экспертом. Существует 5 863 рентгеновских снимка (JPEG) и 2 категории (пневмония / нормальный).
Источник данных: Набор данных о пневмонии

Примечание. Полный код можно загрузить по адресу https://github.com/Harshita9511/Healthcare-ML-Web-Application