Red neuronal artificial que utiliza un conjunto de datos de cáncer de mama

Contenidos

Este artículo fue publicado como parte del Blogatón de ciencia de datos

Introducción

En este artículo, aprenderemos cómo una de las técnicas de aprendizaje profundo utilizadas para encontrar la precisión de Conjunto de datos de cáncer de mama, pero sé que la mayoría de los técnicos no saben de qué estamos hablando, comenzaremos desde lo fundamental y luego avanzaremos hacia nuestro tema. En primer lugar, haremos una breve introducción al aprendizaje profundo y luego, ¿qué es la red neuronal artificial?

¿Qué es el aprendizaje profundo?

Si hablamos de aprendizaje profundo, simplemente comprenda que es un subconjunto o una subparte del aprendizaje automático. Podemos decir que el aprendizaje profundo es una función de IA que imita el cerebro humano y procesa esos datos y crea patrones para usar en la toma de decisiones.

El aprendizaje profundo es el tipo de aprendizaje automático que es algo así como el cerebro humano. Utiliza una estructura de algoritmos de varias capas llamadas redes neuronales. Sus algoritmos intentan copiar los datos que los humanos estarían analizando con una estructura lógica determinada. También se conoce como red neuronal profunda o aprendizaje neuronal profundo.

903981_i5o6nx_dikyi1vbulfx77q-8739305

En el aprendizaje profundo hay un concepto llamado Red neuronal artificial que discutiremos brevemente a continuación:

Red neuronal artificial

Como su nombre indica red neuronal artificial, es la red de neuronas artificiales. Se refiere a un modelo inspirado biológicamente en el cerebro. Podemos decir que suele ser una red computacional basada en redes neuronales biológicas que construyen la estructura del cerebro humano.

Todos ustedes saben que las neuronas están interconectadas entre sí en nuestro cerebro y el proceso de transmisión de datos. Es similar a las neuronas del cerebro humano que están interconectadas entre sí, la red neuronal consta de una gran cantidad de neuronas artificiales, que se denominan unidades dispuestas en una secuencia de capas. teniendo las diversas capas de las neuronas y formando una red completa. estas neuronas se denominan nodos.

Consiste en tres capas que es:

  • Capa de entrada
  • Capa oculta
  • Capa de salida
70593112-9565977

Crear ANN utilizando un conjunto de datos de cáncer de mama

Ahora pasamos a nuestro tema, aquí tomaremos el conjunto de datos y luego crearemos la red neuronal artificial y clasificaremos el diagnóstico, primero, tomamos un conjunto de datos del cáncer de mama y luego avanzamos.

Conjunto de datos: Conjunto de datos de cáncer de mama

Después de descargar el conjunto de datos, importaremos las bibliotecas importantes que se requieren para el proceso posterior.

Importar bibliotecas

#import pandas
import pandas as pd
#import numpy
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb

Aquí importamos pandas, NumPy y algunas bibliotecas de visualización.

Ahora cargamos nuestro conjunto de datos usando pandas:

df = pd.read_csv('Breast_cancer.csv')
df
69704screenshot202021-06-1220075913-9220964

En este conjunto de datos, apuntamos a la ‘diagnóstico’ columna de características, por lo que verificamos el recuento de valores de esa columna usando pandas:

# counting values of variables in 'diagnosis'
df['diagnosis'].value_counts()
14470screenshot202021-06-1220080416-7384076

Ahora visualizamos los recuentos de valores de las ‘columnas de diagnóstico: para una mejor comprensión

Visualizar cuentas de valor

plt.figure(figsize=[17,9])
sb.countplot(df['diagnosis'].value_counts())
plt.show()
46880screenshot20from202021-06-122014-59-24-7553297

Valores nulos

En el conjunto de datos, tenemos que verificar los valores nulos que están presentes dentro de las variables para las que usamos pandas:

df.isnull().sum()

Después de ejecutar el programa, llegamos a la conclusión de que el nombre de la función ‘Sin nombre: 32’ contiene todos los valores nulos, por lo que eliminamos o descartamos esa columna.

#droping feature
df.drop(['Unnamed: 32','id'],axis=1,inplace=True)

Variables independientes y dependientes

Ahora es el momento de dividir el conjunto de datos en variables independientes y dependientes, para eso creamos dos variables, una representa independiente y la otra representa dependiente.

# independent variables
x = df.drop('diagnosis',axis=1)
#dependent variables
y = df.diagnosis

Manejo del valor categórico

Cuando imprimimos la variable dependiente y luego vemos que contienen datos categóricos y tenemos que convertir datos categóricos al formato binario para un proceso posterior. Por lo tanto, usamos Scikit learn Label Encoder para codificar los datos categóricos.

from sklearn.preprocessing import LabelEncoder
#creating the object
lb = LabelEncoder()
y = lb.fit_transform(y)

División de datos

Ahora es el momento de dividir los datos en partes de entrenamiento y prueba:

from sklearn.model_selection import train_test_split
xtrain,xtest,ytrain,ytest = train_test_split(x,y,test_size=0.3,random_state=40)

Escalar los datos

Cuando creamos la red neuronal artificial, tenemos que escalar los datos a números más pequeños porque el algoritmo de aprendizaje profundo multiplica los pesos y los datos de entrada de los nodos y lleva mucho tiempo, por lo que para reducir ese tiempo escalamos los datos.

Para escalar, usamos el scikit learn Escalador estándar módulo, escalamos el conjunto de datos de entrenamiento y prueba:

#importing StandardScaler
from sklearn.preprocessing import StandardScaler
#creating object
sc = StandardScaler()
xtrain = sc.fit_transform(xtrain)
xtest = sc.transform(xtest)

A partir de aquí comenzamos a crear la red neuronal artificial, para eso importamos las bibliotecas importantes que se utilizan para crear ANN:

#importing keras
import keras
#importing sequential module
from keras.models import Sequential
# import dense module for hidden layers
from keras.layers import Dense
#importing activation functions
from keras.layers import LeakyReLU,PReLU,ELU
from keras.layers import Dropout

Creando Capas

Después de importar esas bibliotecas, creamos los tres tipos de capas:

  • Capa de entrada
  • Capa oculta
  • Capa de salida

Primero, creamos el modelo:

#creating model
classifier = Sequential()

A secuencial El modelo es apropiado para una pila simple de capas donde cada capa tiene exactamente un tensor de entrada y un tensor de salida.

Ahora creamos las capas de la red neuronal:

#first hidden layer
classifier.add(Dense(units=9,kernel_initializer="he_uniform",activation='relu',input_dim=30))
#second hidden layer
classifier.add(Dense(units=9,kernel_initializer="he_uniform",activation='relu'))
# last layer or output layer
classifier.add(Dense(units=1,kernel_initializer="glorot_uniform",activation='sigmoid'))

En el siguiente código, se usa el método Dense para crear las capas, en el que usamos parámetros fundamentales. El primer parámetro es Nodos de salida, el El segundo es el inicializador para la matriz de ponderaciones del núcleo, el tercero es la función de activación y el último parámetro son los nodos de entrada o el número de características independientes.

Después de ejecutar este código tomamos el resumen del mismo usando:

#taking summary of layers
classifier.summary()
99565screenshot202021-06-1220084647-6110422

Compilando ANN

Ahora compilamos nuestro modelo con el optimizador:

#compiling the ANN
classifier.compile(optimizer="adam",loss="binary_crossentropy",metrics=['accuracy'])

Adaptación de la ANN a los datos de entrenamiento

Después de compilar el modelo, tenemos que ajustar la ANN en los datos de entrenamiento para la predicción:

 #fitting the ANN to the training set
model = classifier.fit(xtrain,ytrain,batch_size=100,epochs=100)
82560screenshot202021-06-1220085211-7230726

los encajar() El método ajusta la ANN a los datos de entrenamiento, en los parámetros establecemos los valores específicos de cada variable como tamaño de lote, épocas, etc. Por fin, encontramos una puntuación de precisión excelente, por lo que nuestro modelo se adapta perfectamente a los datos de entrenamiento.

Después de entrenar los datos, también tenemos que probar la puntuación de precisión de los datos de la prueba, veamos a continuación:

#now testing for Test data
y_pred = classifier.predict(test)

Al ejecutar este código, encontramos que y_pred contenía los diferentes valores, por lo que convertimos los valores de predicción en valores de umbral como Verdadero, Falso.

#converting values
y_pred = (y_pred>0.5)
print(y_pred)
94786screenshot202021-06-1220085914-5804980

Matriz de puntuación y confusión

Ahora verificamos la matriz de confusión y la puntuación de los valores predichos.

from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
cm = confusion_matrix(ytest,y_pred)
score = accuracy_score(ytest,y_pred)
print(cm)
print('score is:',score)

Producción:-

71586a-2228284

Visualizar matriz de confusión

Aquí visualizamos la matriz de confusión de los valores de predicción.

# creating heatmap of comfussion matrix
plt.figure(figsize=[14,7])
sb.heatmap(cm,annot=True)
plt.show()
14201screenshot202021-06-1220090913-4427746

Visualizar el historial de datos

Ahora visualizamos la pérdida y precisión en cada época.

# list all data in history
print(model.history.keys())
# summarize history for accuracy
plt.plot(model.history['accuracy'])
plt.title('model accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc="upper left")
plt.show()
84984screenshot202021-06-1220091044-7500253
# summarize history for loss
plt.plot(model.history['loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc="upper left")
plt.show()
58930screenshot202021-06-1220091136-4070596

Modelo de ahorro

Por fin, salvamos nuestro modelo.

#saving the model
classifier.save('File_name.h5')

EndNote

Esta es mi primera ANN creada en aprendizaje profundo, soy un principiante en aprendizaje profundo. Hago todo lo posible para explicar este artículo, espero que les guste. Gracias por leer este artículo.

Conéctese conmigo en LinkedIn: Perfil

Gracias.

Los medios que se muestran en este artículo no son propiedad de DataPeaker y se utilizan a discreción del autor.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.