返回顶部
首页 > 资讯 > 后端开发 > Python >Python中如何进行基于BP神经网络的预测
  • 660
分享到

Python中如何进行基于BP神经网络的预测

2023-06-26 07:06:38 660人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

今天就跟大家聊聊有关python中如何进行基于BP神经网络的预测,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、Introduction1 BP神经网络的优点非线性映射能力:BP神

今天就跟大家聊聊有关python中如何进行基于BP神经网络的预测,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

一、Introduction

1 BP神经网络的优点

  • 非线性映射能力:BP神经网络实质上实现了一个从输入到输出的映射功能,数学理论证明三层的神经网络就能够以任意精度逼近任何非线性连续函数。这使得其特别适合于求解内部机制复杂的问题,即BP神经网络具有较强的非线性映射能力。

  • 学习和自适应能力:BP神经网络在训练时,能够通过学习自动提取输入、输出数据间的“合理规则”,并自适应地将学习内容记忆于网络的权值中。即BP神经网络具有高度自学习和自适应的能力。

  • 泛化能力:所谓泛化能力是指在设计模式分类器时,即要考虑网络在保证对所需分类对象进行正确分类,还要关心网络在经过训练后,能否对未见过的模式或有噪声污染的模式,进行正确的分类。也即BP神经网络具有将学习成果应用于新知识的能力。

2 BP神经网络的缺点

  • 局部极小化问题:从数学角度看,传统的 BP神经网络为一种局部搜索的优化方法,它要解决的是一个复杂非线性化问题,网络的权值是通过沿局部改善的方向逐渐进行调整的,这样会使算法陷入局部极值,权值收敛到局部极小点,从而导致网络训练失败。加上BP神经网络对初始网络权重非常敏感,以不同的权重初始化网络,其往往会收敛于不同的局部极小,这也是每次训练得到不同结果的根本原因

  • BP 神经网络算法的收敛速度慢:由于BP神经网络算法本质上为梯度下降法,它所要优化的目标函数是非常复杂的,因此,必然会出现“锯齿形现象”,这使得BP算法低效;又由于优化的目标函数很复杂,它必然会在神经元输出接近0或1的情况下,出现一些平坦区,在这些区域内,权值误差改变很小,使训练过程几乎停顿;BP神经网络模型中,为了使网络执行BP算法,不能使用传统的一维搜索法求每次迭代的步长,而必须把步长的更新规则预先赋予网络,这种方法也会引起算法低效。以上种种,导致了BP神经网络算法收敛速度慢的现象。

  • BP 神经网络结构选择不一:BP神经网络结构的选择至今尚无一种统一而完整的理论指导,一般只能由经验选定。网络结构选择过大,训练中效率不高,可能出现过拟合现象,造成网络性能低,容错性下降,若选择过小,则又会造成网络可能不收敛。而网络的结构直接影响网络的逼近能力及推广性质。因此,应用中如何选择合适的网络结构是一个重要的问题。

二、实现过程

1 Demo

#%% 基础数组运算库导入import numpy as np # 画图库导入import matplotlib.pyplot as plt # 导入三维显示工具from mpl_toolkits.mplot3D import Axes3D# 导入BP模型from sklearn.neural_network import MLPClassifier# 导入demo数据制作方法from sklearn.datasets import make_classificationfrom sklearn.metrics import classification_report, confusion_matriximport seaborn as snsimport warningsfrom sklearn.exceptions import ConvergenceWarning#%%模型训练# 制作五个类别的数据,每个类别1000个样本train_samples, train_labels = make_classification(n_samples=1000, n_features=3,                            n_redundant=0,n_classes=5, n_infORMative=3,                            n_clusters_per_class=1,class_sep=3, random_state=10)# 将五个类别的数据进行三维显示fig = plt.figure()ax = Axes3D(fig, rect=[0, 0, 1, 1], elev=20, azim=20)ax.scatter(train_samples[:, 0], train_samples[:, 1], train_samples[:, 2], marker='o', c=train_labels)plt.title('Demo Data Map')

Python中如何进行基于BP神经网络的预测

#%% 建立 BP 模型, 采用sgd优化器,relu非线性映射函数BP = MLPClassifier(solver='sgd',activation = 'relu',max_iter = 500,alpha = 1e-3,                   hidden_layer_sizes = (32,32),random_state = 1)# 进行模型训练with warnings.catch_warnings():    warnings.filterwarnings("ignore", cateGory=ConvergenceWarning,                            module="sklearn")    BP.fit(train_samples, train_labels)# 查看 BP 模型的参数print(BP)#%% 进行模型预测predict_labels = BP.predict(train_samples)# 显示预测的散点图fig = plt.figure()ax = Axes3D(fig, rect=[0, 0, 1, 1], elev=20, azim=20)ax.scatter(train_samples[:, 0], train_samples[:, 1], train_samples[:, 2], marker='o', c=predict_labels)plt.title('Demo Data Predict Map with BP Model')# 显示预测分数print("预测准确率: {:.4f}".format(BP.score(train_samples, train_labels)))# 可视化预测数据 print("真实类别:", train_labels[:10])print("预测类别:", predict_labels[:10])# 准确率等报表print(classification_report(train_labels, predict_labels))# 计算混淆矩阵classes = [0, 1, 2, 3]cofusion_mat = confusion_matrix(train_labels, predict_labels, classes) sns.set()figur, ax = plt.subplots()# 画热力图sns.heatmap(cofusion_mat, cmap="YlGnBu_r", annot=True, ax=ax) ax.set_title('confusion matrix')  # 标题ax.set_xticklabels([''] + classes, minor=True)ax.set_yticklabels([''] + classes, minor=True)ax.set_xlabel('predict')  # x轴ax.set_ylabel('true')  # y轴plt.show()

Python中如何进行基于BP神经网络的预测

Python中如何进行基于BP神经网络的预测

Python中如何进行基于BP神经网络的预测

#%%# 进行新的测试数据测试test_sample = np.array([[-1, 0.1, 0.1]])print(f"{test_sample} 类别是: ", BP.predict(test_sample))print(f"{test_sample} 类别概率分别是: ", BP.predict_proba(test_sample))test_sample = np.array([[-1.2, 10, -91]])print(f"{test_sample} 类别是: ", BP.predict(test_sample))print(f"{test_sample} 类别概率分别是: ", BP.predict_proba(test_sample))test_sample = np.array([[-12, -0.1, -0.1]])print(f"{test_sample} 类别是: ", BP.predict(test_sample))print(f"{test_sample} 类别概率分别是: ", BP.predict_proba(test_sample))test_sample = np.array([[100, -90.1, -9.1]])print(f"{test_sample} 类别是: ", BP.predict(test_sample))print(f"{test_sample} 类别概率分别是: ", BP.predict_proba(test_sample))

Python中如何进行基于BP神经网络的预测

2 基于BP神经网络的乳腺癌分类预测

#%%基于BP神经网络的乳腺癌分类#基本库导入# 导入乳腺癌数据集from sklearn.datasets import load_breast_cancer# 导入BP模型from sklearn.neural_network import MLPClassifier# 导入训练集分割方法from sklearn.model_selection import train_test_split # 导入预测指标计算函数和混淆矩阵计算函数from sklearn.metrics import classification_report, confusion_matrix# 导入绘图包import seaborn as snsimport matplotlib.pyplot as plt# 导入三维显示工具from mpl_toolkits.mplot3d import Axes3D# 导入乳腺癌数据集cancer = load_breast_cancer()# 查看数据集信息print('breast_cancer数据集的长度为:',len(cancer))print('breast_cancer数据集的类型为:',type(cancer))# 分割数据为训练集和测试集cancer_data = cancer['data']print('cancer_data数据维度为:',cancer_data.shape)cancer_target = cancer['target']print('cancer_target标签维度为:',cancer_target.shape)cancer_names = cancer['feature_names']cancer_desc = cancer['DESCR']#分为训练集与测试集cancer_data_train,cancer_data_test = train_test_split(cancer_data,test_size=0.2,random_state=42)#训练集cancer_target_train,cancer_target_test = train_test_split(cancer_target,test_size=0.2,random_state=42)#测试集

Python中如何进行基于BP神经网络的预测

#%%# 建立 BP 模型, 采用Adam优化器,relu非线性映射函数BP = MLPClassifier(solver='adam',activation = 'relu',max_iter = 1000,alpha = 1e-3,hidden_layer_sizes = (64,32, 32),random_state = 1)# 进行模型训练BP.fit(cancer_data_train, cancer_target_train)#%% 进行模型预测predict_train_labels = BP.predict(cancer_data_train)# 可视化真实数据fig = plt.figure()ax = Axes3D(fig, rect=[0, 0, 1, 1], elev=20, azim=20) ax.scatter(cancer_data_train[:, 0], cancer_data_train[:, 1], cancer_data_train[:, 2], marker='o', c=cancer_target_train)plt.title('True Label Map')plt.show()# 可视化预测数据fig = plt.figure()ax = Axes3D(fig, rect=[0, 0, 1, 1], elev=20, azim=20) ax.scatter(cancer_data_train[:, 0], cancer_data_train[:, 1], cancer_data_train[:, 2], marker='o', c=predict_train_labels)plt.title('Cancer with BP Model')plt.show()

Python中如何进行基于BP神经网络的预测

#%% 显示预测分数print("预测准确率: {:.4f}".format(BP.score(cancer_data_test, cancer_target_test)))# 进行测试集数据的类别预测predict_test_labels = BP.predict(cancer_data_test)print("测试集的真实标签:\n", cancer_target_test)print("测试集的预测标签:\n", predict_test_labels)#%% 进行预测结果指标统计 统计每一类别的预测准确率、召回率、F1分数print(classification_report(cancer_target_test, predict_test_labels))

Python中如何进行基于BP神经网络的预测

#%% 计算混淆矩阵confusion_mat = confusion_matrix(cancer_target_test, predict_test_labels)# 打印混淆矩阵print(confusion_mat)# 将混淆矩阵以热力图的方式显示sns.set()figure, ax = plt.subplots()# 画热力图sns.heatmap(confusion_mat, cmap="YlGnBu_r", annot=True, ax=ax)  # 标题 ax.set_title('confusion matrix')# x轴为预测类别ax.set_xlabel('predict')  # y轴实际类别ax.set_ylabel('true')  plt.show()

Python中如何进行基于BP神经网络的预测

注:之前还做过基于BP神经网络的人口普查数据预测,有需要的猿友私信

三、Keys

BP神经网络的要点在于前向传播和误差反向传播,来对参数进行更新,使得损失最小化。

它是一个迭代算法,基本思想是:

  • 先计算每一层的状态和激活值,直到最后一层(即信号是前向传播的);

  • 计算每一层的误差,误差的计算过程是从最后一层向前推进的(反向传播);

  • 更新参数(目标是误差变小)。迭代前面两个步骤,直到满足停止准则(比如相邻两次迭代的误差的差别很小)。

Python的优点有哪些

1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代码格式的要求没有那么严格;2、Python属于开源的,所有人都可以看到源代码,并且可以被移植在许多平台上使用;3、Python面向对象,能够支持面向过程编程,也支持面向对象编程;4、Python是一种解释性语言,Python写的程序不需要编译成二进制代码,可以直接从源代码运行程序;5、Python功能强大,拥有的模块众多,基本能够实现所有的常见功能。

看完上述内容,你们对Python中如何进行基于BP神经网络的预测有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网Python频道,感谢大家的支持。

--结束END--

本文标题: Python中如何进行基于BP神经网络的预测

本文链接: https://lsjlt.com/news/307317.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python中如何进行基于BP神经网络的预测
    今天就跟大家聊聊有关Python中如何进行基于BP神经网络的预测,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、Introduction1 BP神经网络的优点非线性映射能力:BP神...
    99+
    2023-06-26
  • BP神经网络预测(python)
    可以参考新发布的文章 1.mlp多层感知机预测(python) 2.lstm时间序列预测+GRU(python) 下边是基于Python的简单的BP神经网络预测,多输入单输出,也可以改成多输入多输出,...
    99+
    2023-08-31
    python 神经网络 机器学习
  • Python机器学习应用之基于BP神经网络的预测篇详解
    目录一、Introduction1 BP神经网络的优点2 BP神经网络的缺点二、实现过程1 Demo2 基于BP神经网络的乳腺癌分类预测三、Keys一、Introduction 1 ...
    99+
    2024-04-02
  • python:使用卷积神经网络(CNN)进行回归预测
    作者:CSDN @ _养乐多_ 本文详细记录了从Excel或者csv中读取用于训练卷积神经网络(CNN)模型的数据,包括多个自变量和1个因变量数据,以供卷积神经网络模型的训练。随后,我们将测试数据集应...
    99+
    2023-10-26
    python cnn 回归
  • 使用python里的神经网络进行数据回归预测
    在Python中使用神经网络进行数据回归预测,你可以使用深度学习库如TensorFlow、Keras或PyTorch来实现。以下是使用Keras库的示例代码: Step 1: 准备数据 首先,准备用于...
    99+
    2023-10-08
    python 神经网络 回归
  • 如何在python中使用Tensorflow训练BP神经网络
    如何在python中使用Tensorflow训练BP神经网络?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用软件Python 3.8,Tensorflow2.0问题描述鸢...
    99+
    2023-06-15
  • python神经网络tensorflow利用训练好的模型进行预测
    目录学习前言载入模型思路实现代码学习前言 在神经网络学习中slim常用函数与如何训练、保存模型文章里已经讲述了如何使用slim训练出来一个模型,这篇文章将会讲述如何预测。 载入模型思...
    99+
    2024-04-02
  • Python中LSTM回归神经网络时间序列如何预测
    这篇文章主要介绍“Python中LSTM回归神经网络时间序列如何预测”,在日常操作中,相信很多人在Python中LSTM回归神经网络时间序列如何预测问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中...
    99+
    2023-07-02
  • 基于Pytorch的神经网络如何实现Regression
    这篇文章将为大家详细讲解有关基于Pytorch的神经网络如何实现Regression,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.引言我们之前已经介绍了神经网络的基本知识,神经网络的主要作用就是预测与...
    99+
    2023-06-29
  • 如何使用PHP进行神经网络和深度神经网络开发?
    随着人工智能技术的发展,神经网络和深度神经网络越来越受到关注。它们被应用于计算机视觉、自然语言处理、机器翻译等领域。如果你想学习如何使用PHP进行神经网络和深度神经网络开发,那么本文就为你介绍一些基本的知识。神经网络和深度神经网络简介神经网...
    99+
    2023-05-21
    神经网络 PHP 深度神经网络
  • 基于Tensorflow如何搭建一个神经网络
    小编给大家分享一下基于Tensorflow如何搭建一个神经网络,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、Tensorlow结构import te...
    99+
    2023-06-15
  • python神经网络VGG16模型复现及其如何预测详解
    目录什么是VGG16模型VGG网络部分实现代码图片预测学一些比较知名的模型对身体有好处噢! 什么是VGG16模型 VGG是由Simonyan 和Zisserman在文献《Very D...
    99+
    2024-04-02
  • Python中LSTM回归神经网络时间序列预测详情
    前言: 这个问题是国际航空乘客预测问题, 数据是1949年1月到1960年12月国际航空公司每个月的乘客数量(单位:千人),共有12年144个月的数据。数据趋势: 训练程序: im...
    99+
    2024-04-02
  • 怎么使用PyTorch的hub模块搭建神经网络进行气温预测
    本文小编为大家详细介绍“怎么使用PyTorch的hub模块搭建神经网络进行气温预测”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用PyTorch的hub模块搭建神经网络进行气温预测”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
    99+
    2023-07-05
  • 机器学习:基于神经网络对用户评论情感分析预测
    机器学习:基于神经网络对用户评论情感分析预测 作者:i阿极 作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关...
    99+
    2023-09-10
    机器学习 神经网络 python 深度学习
  • 算法介绍及实现——基于遗传算法改进的BP神经网络算法(附完整Python实现)
    目录 一、算法介绍 1.1 遗传算法 1.2 为什么要使用遗传算法进行改进 二、算法原理 三、算法实现 3.1 算子选择 3.2 代码实现 一、算法介绍 1.1 遗传算法         遗传算法是受启发于自然界中生物对于自然环境 “...
    99+
    2023-09-04
    神经网络 pytorch
  • 基于Matlab如何实现人工神经网络回归
    这篇文章主要介绍了基于Matlab如何实现人工神经网络回归的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于Matlab如何实现人工神经网络回归文章都会有所收获,下面我们一起来看看吧。首先需要注明的是,在MAT...
    99+
    2023-07-05
  • Python中如何实现卷积神经网络
    这篇文章主要介绍了Python中如何实现卷积神经网络,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、卷积神经网络Yann LeCun 和Yoshua Bengio在1995...
    99+
    2023-06-15
  • 单层的基础神经网络基于TensorFlow如何实现手写字识别
    本篇文章为大家展示了单层的基础神经网络基于TensorFlow如何实现手写字识别,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。先上代码import tensorflow &nbs...
    99+
    2023-06-17
  • PHP中如何进行机器学习算法和神经网络训练?
    随着互联网和大数据时代的到来,机器学习已经成为了计算机领域的一个重要分支。而PHP作为一种流行的Web开发语言,也不例外。PHP中有许多常见的机器学习算法和可供使用的神经网络训练库。在本文中,我们将介绍如何在PHP中实现机器学习算法和神经网...
    99+
    2023-05-21
    PHP 机器学习算法 神经网络训练
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作