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