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

作者简介: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智能应用

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

 

 

### 关于乳腺癌数据集进行深度学习的资源和教程 #### 1. 数据集介绍 乳腺癌相关数据集提供了丰富的信息,有助于研究者开发更有效的诊断工具[^1]。 #### 2. 深度学习乳腺癌诊断中的应用价值 卷积神经网络(CNN)等深度学习技术在医学影像分析中表现出色,在乳腺癌影像自动化诊断方面尤为突出。这些方法克服了传统基于经验的方法所带来的准确性与一致性难题[^2]。 #### 3. 实现方案概述 为了实现对乳腺癌的有效预测,除了逻辑回归这样的简单模型外,还可以采用更加复杂的全连接神经网络或多层感知机(MLP),这类架构能捕捉到更为抽象的数据特性并完成分类任务[^3]。 #### 4. Python代码实例展示如何使用Scikit-Learn库构建基础版逻辑回归模型来处理该类问题;而对于希望深入探索深度学习解决方案的研究人员来说,则推荐尝试TensorFlow/Keras框架下的CNN或其他高级DNN结构: ```python import tensorflow as tf from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler # 加载数据集 data = load_breast_cancer() X, y = data.data, data.target # 划分训练集测试集 X_train, X_test, y_train, y_test = train_test_split(X, y) # 特征缩放 scaler = StandardScaler().fit(X_train) X_train_scaled = scaler.transform(X_train) X_test_scaled = scaler.transform(X_test) # 构建简单的CNN模型 model = tf.keras.models.Sequential([ tf.keras.layers.Dense(64, activation='relu', input_shape=(X.shape[1],)), tf.keras.layers.Dropout(0.5), tf.keras.layers.Dense(32, activation='relu'), tf.keras.layers.Dropout(0.5), tf.keras.layers.Dense(1, activation='sigmoid') ]) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) history = model.fit(X_train_scaled, y_train, epochs=50, batch_size=8, validation_data=(X_test_scaled, y_test)) ``` 此段代码展示了如何通过Keras API快速搭建一个多层感知器用于解决二分类问题,并引入Dropout防止过拟合现象发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qq_469603589

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

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

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

打赏作者

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

抵扣说明:

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

余额充值