Прогнозирование сердечных заболеваний с использованием ИНС
Глубокое обучение - это технология, имитирующая человеческий мозг в том смысле, что он состоит из нескольких нейронов с несколькими слоями, как человеческий мозг. Сформированная таким образом сеть состоит из входного слоя, выходного слоя и одного или нескольких скрытых слоев. Сеть пытается учиться на вводимых в нее данных, а затем выполняет соответствующие прогнозы. Самый простой тип нейронной сети - это искусственная нейронная сеть (ANN). ИНС не имеет какой-либо специальной структуры, она просто состоит из нескольких нейронных слоев, которые используются для прогнозирования.
Давайте построим модель, которая с помощью ИНС предсказывает, есть ли у человека сердечное заболевание.
О данных:
В наборе данных у нас есть 13 столбцов, в которых нам даны различные атрибуты, такие как пол, возраст, уровень холестерина и т. Д., И нам дается целевой столбец, который сообщает нам, имеет ли этот человек болезнь сердца или нет. Мы сохраним все столбцы как независимые переменные, кроме целевого столбца, потому что это будет наша зависимая переменная. Мы построим ИНС, которая будет предсказывать, есть ли у человека болезнь сердца или нет, с учетом других характеристик человека.
Вы можете найти набор данных здесь набор данных о сердечных заболеваниях
import tensorflow as tf import pandas as pd import numpy as np import matplotlib.pyplot as plt import keras from keras.models import Sequential from keras.layers import Dense from sklearn.metrics import confusion_matrix |
Код: Импорт набора данных
data = pd.read_csv( 'heart.csv' ) data.head() |
Описание данных:
data.describe() |
Код: проверка нулевых значений
data.isnull(). any () |
Назначить зависимую и независимую переменную
X = data.iloc[:,: 13 ].values y = data[ "target" ].values |
Код: разделение данных на набор данных для обучения и тестирования
X_train,X_test,y_train, y_test = train_test_split(X,y,test_size = 0.3 , random_state = 0 ) |
Код: масштабируйте данные.
from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test) |
Код: построение модели
classifier = Sequential() classifier.add(Dense(activation = "relu" , input_dim = 13 , units = 8 , kernel_initializer = "uniform" )) classifier.add(Dense(activation = "relu" , units = 14 , kernel_initializer = "uniform" )) classifier.add(Dense(activation = "sigmoid" , units = 1 , kernel_initializer = "uniform" )) classifier. compile (optimizer = 'adam' , loss = 'binary_crossentropy' , metrics = [ 'accuracy' ] ) |
Код: установка модели
classifier.fit(X_train , y_train , batch_size = 8 ,epochs = 100 ) |
Код: выполнение прогнозирования и масштабирования
y_pred = classifier.predict(X_test) y_pred = (y_pred > 0.5 ) |
Код: Матрица путаницы
cm = confusion_matrix(y_test,y_pred) cm |
Код: точность
accuracy = (cm[ 0 ][ 0 ] + cm[ 1 ][ 1 ]) / (cm[ 0 ][ 1 ] + cm[ 1 ][ 0 ] + cm[ 0 ][ 0 ] + cm[ 1 ][ 1 ]) print (accuracy * 100 ) |
Мы получим точность примерно 85%.