深度学习-【完整代码+数据集】使用全连接神经网络完成乳腺癌检测

作者简介:Java、前端、Python开发多年,做过高程,项目经理,架构师

主要内容:Java项目开发、Python项目开发、大学数据和AI项目开发、单片机项目设计、面试技术整理、最新技术分享

收藏点赞不迷路  关注作者有好处

文末获得源码

 基本概念:

全连接神经网络(Fully Connected Neural Network,简称FCNN)是一种基础的人工神经网络结构。以下是关于全连接神经网络的详细解释:

一、基本概念

全连接神经网络也被称为多层感知器(Multilayer Perceptron,MLP)。在这种网络中,每个神经元与前一层和后一层的所有神经元相连接,形成一个密集的连接结构。它能够学习输入数据的复杂特征,并进行分类、回归等任务。

二、网络结构

全连接神经网络通常由多个层组成,包括输入层、隐藏层和输出层。输入层负责接收原始数据输入,每个输入特征对应一个输入节点。隐藏层位于输入层和输出层之间,可以包含多个层,每个隐藏层由多个神经元组成。输出层则负责输出神经网络的预测结果。

三、工作原理

全连接神经网络的工作原理基于反向传播算法。在训练过程中,网络首先通过前向传播计算预测结果,并计算预测值与真实值之间的误差。然后,通过反向传播计算梯度并更新网络中的权重和偏置,以最小化误差函数。这个过程会不断迭代,直到网络达到较好的预测性能。

四、激活函数与权重更新

在全连接神经网络中,每个神经元都带有一个激活函数,用于引入非线性性,允许神经网络学习复杂的函数映射。常见的激活函数包括Sigmoid、ReLU、tanh等。此外,每个连接都有一个权重值,表示连接的强度。权重值在网络训练过程中更新,以使神经网络能够学习到合适的特征表示和模式。

五、优缺点及应用

全连接神经网络具有强大的特征学习能力,但在处理大规模数据时可能会面临过拟合、计算资源消耗大等问题。为了解决这些问题,人们开发了更复杂的神经网络结构,如卷积神经网络(CNN)和循环神经网络(RNN)。然而,全连接神经网络在计算机视觉、语音识别等领域仍然有着广泛的应用基础,特别是在一些需要全局特征处理的场景中。

综上所述,全连接神经网络是一种基础且重要的人工神经网络结构,具有强大的特征学习能力和广泛的应用前景。

本案例依据乳腺癌检测数据集,使用全连接神经网络实现数据检测模型训练与测试,最终检测出乳腺癌症患者。

模型训练:

#使用全连接神经网络来实现乳腺癌判断
import numpy as np
import pandas as pd
import matplotlib.pylab as plt
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
import keras
from keras.layers import Dense
from keras.utils.np_utils import to_categorical
from sklearn.metrics import classification_report

#解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

#读取数据
dataset = pd.read_csv("breast_cancer_data.csv")
#print(dataset)

#提取X  特征
X = dataset.iloc[:, :-1]
#print(X)

#提取Y 标签(分类结果)
Y = dataset['target']
#print(Y)

#划分测试集和数据集
x_train,x_test,y_train,y_test=train_test_split(X,Y,test_size=0.2,random_state=42)






# 绘制训练集和验证集的loss值对比
plt.plot(history.history['loss'], label='train')
plt.plot(history.history['val_loss'], label='val')
plt.title("全连接神经网络loss值图")
plt.legend()
plt.show()


# 绘制训练集和验证集的准确率的对比图
plt.plot(history.history['accuracy'], label='train')
plt.plot(history.history['val_accuracy'], label='val')
plt.title("全连接神经网络accuracy值图")
plt.legend()
plt.show()


训练结果通过图形化来进行展示结果如下:

并将训练的模型保存为:model.h5

下面使用训练的数据模型来进行数据测试:

#使用全连接神经网络来实现乳腺癌判断
import numpy as np
import pandas as pd
import matplotlib.pylab as plt
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
import keras
from keras.layers import Dense
from keras.utils.np_utils import to_categorical
from sklearn.metrics import classification_report
from keras.models import load_model


#解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

#读取数据
dataset = pd.read_csv("breast_cancer_data.csv")
#print(dataset)

#提取X  特征
X = dataset.iloc[:, :-1]
#print(X)

#提取Y 标签(分类结果)
Y = dataset['target']
#print(Y)

#划分测试集和数据集
x_train,x_test,y_train,y_test=train_test_split(X,Y,test_size=0.2,random_state=42)

#将数据标签转换为one-hot向量模式
y_test_one = to_categorical(y_test,2)
#进行数据的归一化
sc = MinMaxScaler(feature_range=(0,1))
x_test = sc.fit_transform(x_test)

# 导入训练好的模型
model = load_model("model.h5")

# 利用训练好的模型进行测试
predict = model.predict(x_test)
# print(predict)
#得到预测结果
y_pred = np.argmax(predict, axis=1)
# print(y_pred)

# 将识别的结果转化成汉字
result = []
for i in range(len(y_pred)):
    if y_pred[i] == 0:
        result.append("良性")
    else:
        result.append("恶性")
# print(result)

# 打印模型的精确度和召回
report = classification_report(y_test, y_pred, labels=[0, 1], target_names=["良性", '恶性'])
print(report)

测试结果如下:

   precision    recall  f1-score   support

          良性       0.99      0.93      0.96        71
          恶性       0.89      0.98      0.93        43

    accuracy                           0.95       114
   macro avg       0.94      0.95      0.94       114
weighted avg       0.95      0.95      0.95       114

六、相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

 

 

  • 23
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_469603589

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值