Rede neural artificial usando um conjunto de dados de câncer de mama

Conteúdo

Este artigo foi publicado como parte do Data Science Blogathon

Introdução

Neste artigo, aprenderemos como uma das técnicas de aprendizado profundo utilizadas para encontrar a precisão de Conjunto de dados de câncer de mama, mas eu sei que a maioria dos técnicos não sabe do que estamos falando, começaremos do básico e, em seguida, passaremos ao nosso tópico. Em primeiro lugar, faremos uma breve introdução ao aprendizado profundo e, em seguida,, o que é o neuronal vermelho artificial?

O que é aprendizado profundo?

Se falarmos sobre aprendizagem profunda, apenas entenda que é um subconjunto ou subparte do aprendizado de máquina. Podemos dizer que a aprendizagem profunda é uma função de IA que imita o cérebro humano e processa esses dados e cria padrões para usar na tomada de decisões.

Aprendizado profundo é o tipo de aprendizado de máquina semelhante ao cérebro humano. Usa uma estrutura de várias camadas de algoritmos chamados redes neurais. Seus algoritmos tentam copiar os dados que os humanos estariam analisando com uma certa estrutura lógica. Também conhecido como rede neural profunda ou aprendizado neural profundo.

903981_i5o6nx_dikyi1vbulfx77q-8739305

No aprendizado profundo, existe um conceito chamado Rede Neural Artificial, que discutiremos brevemente a seguir.:

Neuronal vermelho artificial

Como o nome sugere, rede neural artificial, é a rede de neurônios artificiais. Refere-se a um modelo inspirado biologicamente no cérebro. Podemos dizer que geralmente é uma rede computacional baseada em redes neurais biológicas que constroem a estrutura do cérebro humano.

Todos vocês sabem que os neurônios estão interconectados entre si em nosso cérebro e o processo de transmissão de dados. É semelhante aos neurônios do cérebro humano que estão interconectados uns com os outros, a rede neural consiste em um grande número de neurônios artificiais, chamadas unidades organizadas em uma sequência de camadas. tendo as várias camadas de neurônios e formando uma rede completa. esses neurônios são chamados de nós.

Consiste em três camadas que são:

  • Camada de entrada
  • Manto oculto
  • Camada de saída
70593112-9565977

Criar RNA usando um conjunto de dados de câncer de mama

Agora passamos ao nosso tópico, aqui vamos pegar o conjunto de dados e, em seguida, criar a rede neural artificial e classificar o diagnóstico, primeiro, pegamos um conjunto de dados de câncer de mama e seguimos em frente.

Conjunto de dados: Conjunto de dados de câncer de mama

Depois de baixar o conjunto de dados, nós importaremos as bibliotecas importantes que são necessárias para processamento posterior.

Bibliotecas de importação

#importar pandas
importar pandas como pd
#import numpy
importar numpy como np
import matplotlib.pyplot as plt
importado do mar como sb

Aqui nós importamos pandas, NumPy e algumas bibliotecas de exibição.

Agora vamos carregar nosso conjunto de dados usando o pandas:

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

Neste conjunto de dados, nós visamos o 'diagnóstico’ coluna de características, então verificamos a contagem de valores dessa coluna usando pandas:

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

Agora visualizamos as contagens de valores das 'colunas de diagnóstico: para melhor compreensão

Ver contas de valor

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

Valores nulos

No conjunto de dados, temos que verificar os valores nulos que estão presentes dentro das variáveis ​​para as quais usamos o pandas:

df.isnull().soma()

Depois de executar o programa, concluímos que o nome da função ‘Sem nome: 32’ contém todos os valores nulos, então excluímos ou descartamos essa coluna.

#recurso de queda
df.drop(['Sem nome: 32','id'],eixo = 1, local = Verdadeiro)

Variáveis ​​independentes e dependentes

Agora é a hora de dividir o conjunto de dados em variáveis ​​independentes e dependentes, para isso, criamos duas variáveis, um representa independente e o outro representa dependente.

# variáveis ​​independentes
x = df.drop('diagnosis',eixo = 1)
#variáveis ​​dependentes
y = df.diagnosis

Gestão de valor categórico

Quando imprimimos o variável dependente e então vemos que eles contêm dados categóricos e temos que converter os dados categóricos em formato binário para processamento posterior. Portanto, usamos Scikit learn Label Encoder para codificar os dados categóricos.

de sklearn.preprocessing import LabelEncoder
#criando o objeto
lb = LabelEncoder()
y = lb.fit_transform(e)

Divisão de dados

Agora é o momento de dividir os dados em partes de Treinamento e teste:

de sklearn.model_selection import train_test_split
xtrain,xtest,Ytrain,ytest = train_test_split(x,e,test_size = 0.3, random_state = 40)

Dimensione os dados

Quando criamos a rede neural artificial, temos que dimensionar os dados para números menores porque o algoritmo de aprendizado profundo multiplica os pesos e os dados de entrada dos nós e leva muito tempo, então, para reduzir esse tempo, escalamos os dados.

Para escalar, nós usamos o scikit learn Escalador padrão módulo, escalamos o conjunto de dados de treinamento e teste:

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

A partir daqui, começamos a criar a rede neural artificial, para isso importamos as bibliotecas importantes que são usadas para criar ANN:

#importando keras
importar keras
#importing módulo sequencial
de keras.models import Sequential
# importar módulo denso para camadas ocultas
de keras.layers import Dense
#importing funções de ativação
de keras.layers import LeakyReLU,PReLU,ELU
de keras.layers import Dropout

Criação de camadas

Depois de importar essas bibliotecas, nós criamos os três tipos de camadas:

  • Camada de entrada
  • Manto oculto
  • Camada de saída

Primeiro, nós criamos o modelo:

#criando modelo
classificador = Sequencial()

UMA sequencial O modelo é apropriado para uma pilha simples de camadas onde cada camada tem exatamente um tensor de entrada e um tensor de saída.

Agora criamos as camadas da rede neural:

#primeira camada escondida
classifier.add(Denso(unidades = 9, kernel_initializer ="he_uniforme",activation='relu',input_dim = 30))
#segunda camada escondida
classifier.add(Denso(unidades = 9, kernel_initializer ="he_uniforme",activation='relu'))
# última camada ou camada de saída
classifier.add(Denso(unidades = 1, kernel_initializer ="glorot_uniform",activation='sigmoid'))

No seguinte código, o método Denso é usado para criar as camadas, em que usamos parametros fundamentais. O primeiro parâmetro é Nós de saída, a O segundo é o inicializador para a matriz de pesos do kernel, o terceiro é o função de despertar e o último parâmetro são os nós de entrada ou o número de características independentes.

Depois de executar este código, pegamos o resumo dele usando:

#fazendo resumo das camadas
classifier.summary()
99565screenshot202021-06-1220084647-6110422

Preenchendo ANN

Agora compilamos nosso modelo com o otimizador:

#compilando a RNA
classifier.compile(otimizador ="Adão",perda ="binário_crossentropia",metrics =['accuracy'])

Adaptação da RNA aos dados de treinamento

Depois de compilar o modelo, temos que ajustar a RNA nos dados de treinamento para a previsão:

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

a encaixar() O método ajusta a ANN aos dados de treinamento, nos parâmetros, definimos os valores específicos de cada variável como tamanho do lote, épocas, etc. Finalmente, encontramos uma pontuação de precisão excelente, então nosso modelo é perfeitamente adequado para os dados de treinamento.

Depois de treinar os dados, também precisamos testar a pontuação de precisão dos dados de teste, vamos ver a seguir:

#agora testando para dados de teste
y_pred = classifier.predict(teste)

Ao executar este código, descobrimos que y_pred continha os diferentes valores, então, convertemos os valores de predição em valores limite como True, Falso.

#convertendo valores
y_pred = (y_pred>0.5)
imprimir(y_pred)
94786screenshot202021-06-1220085914-5804980

Matriz de pontuação e confusão

Agora verificamos a matriz de confusão e a pontuação dos valores previstos.

de sklearn.metrics import confused_matrix
de sklearn.metrics import precision_score
cm = confusão_matriz(ytest,y_pred)
pontuação = precisão_score(ytest,y_pred)
imprimir(cm)
imprimir('pontuação é:',pontuação)

Produção:-

71586a-2228284

Visualize a matriz de confusão

Aqui, visualizamos a matriz de confusão dos valores de previsão.

# criando mapa de calor da matriz de compressão
plt.figure(figsize =[14,7])
sb.heatmap(cm,annot = True)
plt.show()
14201screenshot202021-06-1220090913-4427746

Ver histórico de dados

Agora visualizamos a perda e a precisão em cada época.

# liste todos os dados do histórico
imprimir(model.history.keys())
# resumir a história para precisão
plt.plot(model.history['accuracy'])
plt.title('precisão do modelo')
plt.ylabel('accuracy')
plt.xlabel('época')
plt.legend(['train', 'test'], loc ="superior esquerdo")
plt.show()
84984screenshot202021-06-1220091044-7500253
# resumir a história para perdas
plt.plot(model.history['loss'])
plt.title('perda do modelo')
plt.ylabel('loss')
plt.xlabel('época')
plt.legend(['train', 'test'], loc ="superior esquerdo")
plt.show()
58930screenshot202021-06-1220091136-4070596

Modelo de poupança

Finalmente, nós salvamos nosso modelo.

#salvando o modelo
classifier.save('Nome_do_arquivo.h5')

EndNote

Esta é a minha primeira RNA criada em aprendizado profundo, Eu sou um iniciante em aprendizado profundo. Eu faço o meu melhor para explicar este artigo, espero que gostem. Obrigado por ler este artigo.

Conecte-se comigo no LinkedIn: Perfil

Obrigado.

A mídia mostrada neste artigo não é propriedade da DataPeaker e é usada a critério do autor.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.

Datapeaker