介绍

在本文中,我们将学习一种深度学习技术如何用于寻找乳腺癌数据集的准确性,但我知道大多数技术人员不知道我在说什么,我们将从基础开始,然后继续讨论我们的主题。首先我们简单介绍一下深度学习,什么是人工神经网络?

什么是深度学习?

如果我们谈论深度学习,那么可以简单地理解它是机器学习的一个子集。我们可以说深度学习是一种人工智能功能,它模仿人脑并处理该数据并创建用于决策的模式。

深度学习是一种类似于人脑的机器学习类型,它使用称为神经网络的多层算法结构。它的算法试图复制人类将使用给定逻辑结构分析数据的数据。它也被称为深度神经网络或深度神经学习。

在深度学习中有一个叫做人工神经网络的概念,我们将在下面简要讨论:

人工神经网络

顾名思义,人工神经网络,就是人工神经元的网络。它指的是模仿大脑的生物启发模型。可以说,构建人脑结构的通常是基于生物神经网络的计算网络。

大家都知道,在我们的大脑中,神经元是相互连接和传递数据的过程。它类似于人脑神经元之间相互连接,神经网络由大量人工神经元组成,称为按层顺序排列的单元。具有各层神经元并形成一个完整的网络。这些神经元被称为节点。

它由三层组成,分别是:

  • 输入层

  • 隐藏层

  • 输出层

使用乳腺癌数据集创建ANN

现在我们进入我们的主题,这里我们将采用数据集,然后创建人工神经网络并对诊断进行分类。

首先,我们采用乳腺癌的数据集,然后继续前进。

乳腺癌数据集:https://www.kaggle.com/uciml/breast-cancer-wisconsin-data

下载数据集后,我们将导入所需的重要库。

导入库

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

这里我们导入了 pandas、NumPy 和一些可视化库。

现在我们使用pandas加载我们的数据集:

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

在此数据集中,我们指向**“diagnosis”**特征列,因此我们使用 Pandas 检查该列的值计数:

# counting values of variables in 'diagnosis'
df['diagnosis'].value_counts()

现在为了更好地理解,我们可视化“diagnosis列”的值计数。

可视化值计数

plt.figure(figsize=[17,9])
sb.countplot(df['diagnosis'].value_counts())
plt.show()

空值

在数据集中,我们必须检查我们使用pandas的变量中是否存在空值:

df.isnull().sum()

执行程序后,我们得出结论,特征名称“Unnamed:32”包含所有空值,因此我们删除该列。

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

自变量和因变量

现在是时候将数据集划分为自变量和因变量了,为此我们创建了两个变量,一个代表自变量,另一个代表因变量。

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

处理分类值

当我们打印因变量y 时,我们看到其中包含分类数据,我们必须将分类数据转换为二进制格式以进行进一步处理,因此我们使用 Scikit learn Label Encoder 对分类数据进行编码。

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

拆分数据

现在是时候将数据拆分为训练和测试部分了:

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

缩放数据

当我们创建人工神经网络时,我们必须将数据缩放为更小的数字,因为深度学习算法将节点的权重和输入数据相乘,这需要大量时间,因此为了减少该时间,我们缩放数据。

对于缩放,我们使用 scikit learn StandardScaler模块,我们缩放训练和测试数据集:

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

从这里我们开始创建人工神经网络,为此我们导入用于创建 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

创建层

导入这些库后,我们创建了三种类型的层:

  • 输入层

  • 隐藏层

  • 输出层

首先,我们创建模型:

#creating model
classifier = Sequential()

Sequential模型适用于每一层恰好有一个输入张量和一个输出张量的平面堆栈。

现在我们创建神经网络的层:

#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'))

在以下代码中,使用 Dense 方法创建图层,因为我们使用基本参数。

第一个参数是输出节点

第二个是内核权重矩阵的初始化器

第三个是激活函数

最后一个参数是输入节点或独立特征的数量。

执行此代码后,我们使用以下方法对其进行总结:

#taking summary of layers
classifier.summary()

编译人工神经网络

现在我们用优化器编译我们的模型:

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

将 ANN 拟合到训练数据中

编译模型后,我们必须将 ANN 拟合到训练数据中以进行预测:

 #fitting the ANN to the training set
model = classifier.fit(xtrain,ytrain,batch_size=100,epochs=100)

fit()方法将神经网络与训练数据进行拟合,在参数中设置batch_size、epochs等变量的具体值。

在训练数据之后,我们还要对测试数据的准确性评分进行测试,如下所示:

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

在执行此代码时,我们发现 y_pred 包含不同的值,因此我们将预测值转换为阈值,如True, False。

#converting values
y_pred = (y_pred>0.5)
print(y_pred)

分数和混淆矩阵

现在我们检查混淆矩阵和预测值的分数。

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)

输出:

可视化混淆矩阵

在这里,我们可视化预测值的混淆矩阵

# creating heatmap of comfussion matrix
plt.figure(figsize=[14,7])
sb.heatmap(cm,annot=True)
plt.show()

可视化数据历史

现在我们可视化每个时期的损失和准确性。

# 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()

# 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()

保存模型

最后,我们保存我们的模型

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

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 mthler」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓

使用乳腺癌数据集的人工神经网络相关推荐

  1. 机器学习——人工神经网络之BP算法编程(python二分类数据集:马疝病数据集)

    目录 一.理论知识回顾 1.神经网络模型 2.明确任务以及参数 1)待估参数: 2)超参数: 3)任务 3.神经网络数学模型定义 1)激活函数 ​ 2)各层权重.阈值定义 3)各层输入输出定义 4.优 ...

  2. 机器学习实战10-Artificial Neural Networks人工神经网络简介(mnist数据集)

    目录 一.感知器 1.1.单层感知器 1.2.多层感知器MLP与反向传播 二.用 TensorFlow 高级 API 训练 MLP DNNClassifier(深度神经网络分类器) 2.1.初始化: ...

  3. Google Earth Engine(GEE)——NOAA_PERSIANN-CDR全球人工神经网络-气候数据集(降水量)

    PERSIANN-CDR:使用人工神经网络-气候数据记录从遥感信息中估计降水量 PERSIANN-CDR 是一个从 1983 年 1 月 1 日至今的每日准全球降水产品.该数据每季度生成一次,通常滞后 ...

  4. 深度学习入门-误差反向传播法(人工神经网络实现mnist数据集识别)

    文章目录 误差反向传播法 5.1 链式法则与计算图 5.2 计算图代码实践 5.3激活函数层的实现 5.4 简单矩阵求导 5.5 Affine 层的实现 5.6 softmax-with-loss层计 ...

  5. 无框架实现基本人工神经网络对MNIST数据集的识别

    学长给的作业,但是在搜索的时候发现好像没有很多已有的资料是在做无框架实现人工神经网络的,而对于MNIST的识别也是使用Tensorflow居多.做出来的是比较差的模型,没有进行正则化,然后在1000次 ...

  6. (决策树,朴素贝叶斯,人工神经网络)实现鸢尾花数据集分类

    from sklearn.datasets import load_iris # 导入方法类iris = load_iris() #导入数据集iris iris_feature = iris.data ...

  7. 第一次,我们在人工神经网络中发现了「真」神经元

    视学算法报道 转载自:机器之心 参与:杜伟.魔王 无论是字面上.符号上还是概念上的表达,这种神经元都会对相同的概念做出反应. OpenAI 的研究者们在人工神经网络 CLIP 上发现了「真」神经元,这 ...

  8. 福利 | 从生物学到神经元:人工神经网络 ( ANN ) 简介

    文末有数据派THU福利哦 [ 导读 ] 我们从鸟类那里得到启发,学会了飞翔,从牛蒡那里得到启发,发明了魔术贴,还有很多其他的发明都是被自然所启发.这么说来看看大脑的组成,并期望因此而得到启发来构建智能 ...

  9. 独家 | 一文读懂人工神经网络学习原理

    原文标题: How do Artificial Neural Networks learn? 作者:rubikscode 翻译:和中华 校对:李海明 本文约3000字,建议阅读10分钟. 本文对人工神 ...

最新文章

  1. 爬虫或恶意攻击,如何动态屏蔽IP地址?
  2. 对象的克隆(clone方法)
  3. C++ httpclient
  4. Diango博客--9.归档、分类和标签页
  5. Cookie的设置获取和删除
  6. 07@Pattern_Note_命令模式
  7. Oracle listener静态注册和动态注册(zt)
  8. pt-show-grants的用法
  9. 自动编码机(Autodencoder)
  10. java.lang.ClassNotFoundException: com.sun.xml.ws.spi.ProviderImpl解决办法
  11. docker 部署 zookeeper+kafka 集群
  12. Cassandra安装和初次使用
  13. 2016前端的收藏夹
  14. 神经网络前景背景分析,人工神经网络研究背景
  15. 使用axure RP8 画UI原型图
  16. 发起AI联盟,天猫精灵CES布局智能家居市场
  17. 即构科技肖传发:即刻构建在线教育的音视频互动场景
  18. DirectX 性能优化
  19. Mac如何安装numpy,pandas,matplotlib,spicy等包,以及下载速度慢遇到read timed out问题如何解决
  20. 一级造价工程师(安装)- 计量笔记 - 第四章第二节热力设备工程

热门文章

  1. STP怎么选根桥和根端口
  2. 精彩英语写作200句对译
  3. 高校间计算机专业交流研讨会,第七届全国高校计算机网络教学暨网络工程专业建设研讨会...
  4. 【教程】区块链是数据库?那么区块链的数据存储在哪里?如何查看数据?FISCO-BCOS如何更换区块链的数据存储,由RocksDB更换为MySQL、MariaDB,联盟链区块链数据库,区块链数据库应用
  5. 周鸿祎:论互联网大佬的编程能力,我能排进前三!
  6. Error in nextTick: “TypeError: Cannot set properties of undefined (setting ‘checked‘)“
  7. html 增加选项,添加标签——给定标签选项
  8. [论文阅读:姿态识别Transformer] POET: End-to-End Trainable Multi-Instance Pose Estimation with Transformers
  9. Android 镜像
  10. vi ~/.bashrc如何保存退出