BP神经网络实现
LabVIEW中BP神经网络的实现及应用

LabVIEW中BP神经网络的实现及应用
0 引言LabVIEW 是美国NI 公司开发的高效图形化虚拟仪器开发平台,它的图形化编程具有直观、简便、快速、易于开发和维护等优点,在虚拟仪器设计和测控系统开发等相关领域得到了日益广泛的应用,它无需任何文本程序代码,而是把复杂、繁琐的语言编程简化成图形,用线条把各种图形连接起来。
BP 神经网络属于前馈神经网络,它广泛应用函数逼近、模式识别、分类和数
据压缩等领域,若将神经网络与虚拟仪器有机结合,则可以为提高虚拟仪器测控系统的性能提供重要的依据。
1 BP 神经网络学习算法BP 模型是一种应用最广泛的多层前向拓扑结构,以三层BP 神经网络作为理论依据进行编程,它由输入层、隐层和输出层构成。
设输入层神经元个数为I,隐层神经元个数为J,输出层神经元个数为K,学习样本有N 个(x,Y,)向量,表示为:输入向量
X{x1,x2,…,xI},输出向量l,{Y1,Y2,…,Yx),理想输出向量为
T{tl,t2,…,tK}。
(1)输入层节点i,其输出等于xi(i=1,2,…,I,将控制变量值传输到隐含层,则隐层第j 个神经元的输入:
其中:Wji 是隐层第J 个神经元到输入层第i 个神经元的连接权值。
(2)隐层第J 个神经元的输出:
(3)神经网络输出层,第k 个神经元的输入为:
其中:Vkj 是输出层第k 个神经元到隐层第j 个神经元的连接权值。
(4)神经网络输出层,第志个神经元的输出为:
(5)设定网络误差函数E:
(6)输出层到隐层的连接权值调整量△Vkj:
(7)隐层到输入层的连接权值调整量wji:。
BP人工神经网络的基本原理模型与实例

BP人工神经网络的基本原理模型与实例BP(Back Propagation)人工神经网络是一种常见的人工神经网络模型,其基本原理是模拟人脑神经元之间的连接和信息传递过程,通过学习和调整权重,来实现输入和输出之间的映射关系。
BP神经网络模型基本上由三层神经元组成:输入层、隐藏层和输出层。
每个神经元都与下一层的所有神经元连接,并通过带有权重的连接传递信息。
BP神经网络的训练基于误差的反向传播,即首先通过前向传播计算输出值,然后通过计算输出误差来更新连接权重,最后通过反向传播调整隐藏层和输入层的权重。
具体来说,BP神经网络的训练过程包括以下步骤:1.初始化连接权重:随机初始化输入层与隐藏层、隐藏层与输出层之间的连接权重。
2.前向传播:将输入向量喂给输入层,通过带有权重的连接传递到隐藏层和输出层,计算得到输出值。
3.计算输出误差:将期望输出值与实际输出值进行比较,计算得到输出误差。
4.反向传播:从输出层开始,将输出误差逆向传播到隐藏层和输入层,根据误差的贡献程度,调整连接权重。
5.更新权重:根据反向传播得到的误差梯度,使用梯度下降法或其他优化算法更新连接权重。
6.重复步骤2-5直到达到停止条件,如达到最大迭代次数或误差小于一些阈值。
BP神经网络的训练过程是一个迭代的过程,通过不断调整连接权重,逐渐减小输出误差,使网络能够更好地拟合输入与输出之间的映射关系。
下面以一个简单的实例来说明BP神经网络的应用:假设我们要建立一个三层BP神经网络来预测房价,输入为房屋面积和房间数,输出为价格。
我们训练集中包含一些房屋信息和对应的价格。
1.初始化连接权重:随机初始化输入层与隐藏层、隐藏层与输出层之间的连接权重。
2.前向传播:将输入的房屋面积和房间数喂给输入层,通过带有权重的连接传递到隐藏层和输出层,计算得到价格的预测值。
3.计算输出误差:将预测的价格与实际价格进行比较,计算得到输出误差。
4.反向传播:从输出层开始,将输出误差逆向传播到隐藏层和输入层,根据误差的贡献程度,调整连接权重。
基于BP神经网络的应用及实现

2 B P 网络 的应 用 实 例
下面采用 B P算法 , 在 Ma t l a b中编程 , 建立 B P神经 网络模 型, 对其进行训练 , 最后用 于对癌细胞 的检测 。 图1 检测 的基 本原理[ 6 , 7 1 : 由于气体分子 或 固体 、 液体 的蒸气受 到一定 能量的电子流轰击或强 电场作用 , 丢失价 电子生成分子 离子 ; 同时 , 化学 键也发 生某些 有规律 裂解 , 生成 各种碎 片离 子。 这些带正 电荷 的离子在 电场和磁场作用下 , 按质荷 比( 即质 量 和电荷 比值 M/ Z) 的大小分开 , 排列成谱 , 记 录下来即为质谱 ( m a s s s p e c t r u m) 。因此 , 可 以根据质谱 中离子的强度判断其血 清蛋 白质样本有无癌症细胞 。 实 例 中的数据 是采用 F D A — N C I诊所 蛋 白质项 目中的数 据库 中的数据 。程序主要完成三部分功能 :一是通过 r a n k f e a — 图2 t u r e s 0 函数 , 从 1 5 0 0 0个 的特征 中选取 1 0 0 个影 响较大 的特征 ; 二是 通过神经 网络 的专用 函数 n e w f 0 建立 B P网络 , 并 对其进 T r a i n b r 函数对网络进行训 练。训练效果如图 2所示 。 行训练 和建模 ; 三是给 出测试的结果 。 表 1 列出 了上述实验 的关键数据 。分析可 知 : 基本梯 度下降算 2 . 1特征 的提取 法 ( T r a i n g d ) ,迭代次数多 ,耗时长 ,收敛 速度慢 ;共轭梯度算法 在数据集 中共有 2 1 6个病人 ,其 中有 1 2 1 个 卵巢癌患者 和 9 5 T r a i n c g p ) 和变梯 度法 与拟牛顿 法 的折 中算 法 ( T r a i n o s s ) 迭代 次数 个正常 的病人 。 每个病人的输入是其 具体 特征 ( M/ Z ) 下 的离子浓度 , ( 耗 时少 , 收敛速度 较快 ; 改进型 L M算法 ( T r i a n b r ) 虽然迭代 次数 由于数 据 中共有 1 5 0 0 0个特征用 于判 断 , 计 算量 过于庞大 , 而且 在 少 , 这些特征 当中也没有哪一种特征可以决定正确的分类 , 。 因此 , 需要 较少 ,但是 每 个训 练周 期很 长 ,网络 输 出与实 际输 出的均方 差 MS E) 偏大 。 个分类器— — T a n k f e a t u r e s 0 i  ̄数 , 用来从 1 5 0 0 0 个 特征中选取 1 0 0 ( 2 - 3神经 网络的性能测试 个重要 的特征用于分类 ; 每个病 人的输出则是一个二值矩 阵 , “ 0 ” 表 将 1 0 0个 测试结果 样本分别 输入到经过 训练 的 B P神经 网络 , 示正常病人 , “ 1 ” 表示患有癌症的病人。 其测试结果如表 2所示 。 2 . 2 B P神 经网络 的构建及训练 3 结 论 文 中用 于 癌症 检测 的神 经 网络含 有 一个 输 入层 ,节点 数 为 本文用 B P神经 网络对病 人样 本进行检测 ,在用大量的真实数 1 0 0 ; 一个输 出层 , 节点数为 2 1 6 ; 一个 隐含层 , 节点数为 l 0 。由于其 据进行训 练后 , 得到满足误差指标 的 B P神经网络 ; 根据不同的算法 输 出函数在 0到 1 之间 ,所 以隐含层和输 出层得 激励 函数 为 s i g — 训 练 网络 ,得 到 的训练 模 型的效 果也 不尽 相 同。结 果表 明使 用 m o i d对数 函数和线性函数。t r a i n根据在 n e w f函数 中确定的训练函
BP神经网络实验报告

BP神经网络实验报告一、引言BP神经网络是一种常见的人工神经网络模型,其基本原理是通过将输入数据通过多层神经元进行加权计算并经过非线性激活函数的作用,输出结果达到预测或分类的目标。
本实验旨在探究BP神经网络的基本原理和应用,以及对其进行实验验证。
二、实验方法1.数据集准备本次实验选取了一个包含1000个样本的分类数据集,每个样本有12个特征。
将数据集进行标准化处理,以提高神经网络的收敛速度和精度。
2.神经网络的搭建3.参数的初始化对神经网络的权重和偏置进行初始化,常用的初始化方法有随机初始化和Xavier初始化。
本实验采用Xavier初始化方法。
4.前向传播将标准化后的数据输入到神经网络中,在神经网络的每一层进行加权计算和激活函数的作用,传递给下一层进行计算。
5.反向传播根据预测结果与实际结果的差异,通过计算损失函数对神经网络的权重和偏置进行调整。
使用梯度下降算法对参数进行优化,减小损失函数的值。
6.模型评估与验证将训练好的模型应用于测试集,计算准确率、精确率、召回率和F1-score等指标进行模型评估。
三、实验结果与分析将数据集按照7:3的比例划分为训练集和测试集,分别进行模型训练和验证。
经过10次训练迭代后,模型在测试集上的准确率稳定在90%以上,证明了BP神经网络在本实验中的有效性和鲁棒性。
通过调整隐藏层结点个数和迭代次数进行模型性能优化实验,可以发现隐藏层结点个数对模型性能的影响较大。
随着隐藏层结点个数的增加,模型在训练集上的拟合效果逐渐提升,但过多的结点数会导致模型的复杂度过高,容易出现过拟合现象。
因此,选择合适的隐藏层结点个数是模型性能优化的关键。
此外,迭代次数对模型性能也有影响。
随着迭代次数的增加,模型在训练集上的拟合效果逐渐提高,但过多的迭代次数也会导致模型过度拟合。
因此,需要选择合适的迭代次数,使模型在训练集上有好的拟合效果的同时,避免过度拟合。
四、实验总结本实验通过搭建BP神经网络模型,对分类数据集进行预测和分类。
实训神经网络实验报告

一、实验背景随着人工智能技术的飞速发展,神经网络作为一种强大的机器学习模型,在各个领域得到了广泛应用。
为了更好地理解神经网络的原理和应用,我们进行了一系列的实训实验。
本报告将详细记录实验过程、结果和分析。
二、实验目的1. 理解神经网络的原理和结构。
2. 掌握神经网络的训练和测试方法。
3. 分析不同神经网络模型在特定任务上的性能差异。
三、实验内容1. 实验一:BP神经网络(1)实验目的:掌握BP神经网络的原理和实现方法,并在手写数字识别任务上应用。
(2)实验内容:- 使用Python编程实现BP神经网络。
- 使用MNIST数据集进行手写数字识别。
- 分析不同学习率、隐层神经元个数对网络性能的影响。
(3)实验结果:- 在MNIST数据集上,网络在训练集上的准确率达到98%以上。
- 通过调整学习率和隐层神经元个数,可以进一步提高网络性能。
2. 实验二:卷积神经网络(CNN)(1)实验目的:掌握CNN的原理和实现方法,并在图像分类任务上应用。
(2)实验内容:- 使用Python编程实现CNN。
- 使用CIFAR-10数据集进行图像分类。
- 分析不同卷积核大小、池化层大小对网络性能的影响。
(3)实验结果:- 在CIFAR-10数据集上,网络在训练集上的准确率达到80%以上。
- 通过调整卷积核大小和池化层大小,可以进一步提高网络性能。
3. 实验三:循环神经网络(RNN)(1)实验目的:掌握RNN的原理和实现方法,并在时间序列预测任务上应用。
(2)实验内容:- 使用Python编程实现RNN。
- 使用Stock数据集进行时间序列预测。
- 分析不同隐层神经元个数、学习率对网络性能的影响。
(3)实验结果:- 在Stock数据集上,网络在训练集上的预测准确率达到80%以上。
- 通过调整隐层神经元个数和学习率,可以进一步提高网络性能。
四、实验分析1. BP神经网络:BP神经网络是一种前向传播和反向传播相结合的神经网络,适用于回归和分类问题。
BP算法程序实现

BP算法程序实现BP(Back Propagation)神经网络是一种常见的人工神经网络模型,是一种监督学习算法。
在BP算法中,神经网络的参数通过反向传播的方式得到更新,以最小化损失函数。
BP神经网络的实现主要分为前向传播和反向传播两个步骤。
首先,我们需要定义BP神经网络的结构。
一个典型的BP神经网络包括输入层、隐藏层和输出层。
输入层接收原始数据,隐藏层进行特征提取和转换,输出层进行最终的预测。
在实现BP神经网络时,我们首先需要进行初始化。
初始化可以为神经网络的权重和偏置添加一些随机的初始值。
这里我们使用numpy库来处理矩阵运算。
前向传播的过程实际上就是将输入数据通过神经网络的每一层,直到输出层。
在每一层中,我们将对应权重和输入数据进行点乘运算,并加上偏置项,然后通过一个激活函数进行非线性转换。
这里我们可以选择sigmoid函数作为激活函数。
在反向传播中,我们根据损失函数对权重和偏置进行调整。
首先,我们计算输出误差,即预测值与真实值之间的差异。
然后,我们根据链式法则来计算每一层的误差,并将误差传递回前一层。
根据误差和激活函数的导数,我们可以计算每个权重和偏置的更新量,然后使用梯度下降法对权重和偏置进行更新。
实现BP算法的程序如下:```pythonimport numpy as npclass NeuralNetwork:def __init__(self, layers):yers = layersself.weights = [np.random.randn(y, x) for x, y inzip(layers[:-1], layers[1:])]self.biases = [np.random.randn(y, 1) for y in layers[1:]] def forward(self, x):a = np.array(x).reshape(-1, 1)for w, b in zip(self.weights, self.biases):z = np.dot(w, a) + ba = self.sigmoid(z)return adef backward(self, x, y, lr=0.01):a = np.array(x).reshape(-1, 1)targets = np.array(y).reshape(-1, 1)# forward passactivations = [a]zs = []for w, b in zip(self.weights, self.biases):z = np.dot(w, a) + bzs.append(z)a = self.sigmoid(z)activations.append(a)# backward passdeltas = [self.loss_derivative(activations[-1], targets) * self.sigmoid_derivative(zs[-1])]for l in range(2, len(yers)):z = zs[-l]sp = self.sigmoid_derivative(z)deltas.append(np.dot(self.weights[-l + 1].T, deltas[-1]) * sp)deltas.reverse# update weights and biasesfor l in range(len(yers) - 1):self.weights[l] += -lr * np.dot(deltas[l], activations[l].T) self.biases[l] += -lr * deltas[l]def sigmoid(x):return 1 / (1 + np.exp(-x))def sigmoid_derivative(x):return NeuralNetwork.sigmoid(x) * (1 -NeuralNetwork.sigmoid(x))def loss_derivative(y_pred, y_true):return y_pred - y_true```上述代码中,首先我们定义一个NeuralNetwork类,包含两个主要方法:forward(和backward(。
神经网络的BP算法实验报告

计算智能基础实验报告实验名称:BP神经网络算法实验班级名称:341521班专业:探测制导与控制技术姓名:***学号:********一、 实验目的1)编程实现BP 神经网络算法;2)探究BP 算法中学习因子算法收敛趋势、收敛速度之间的关系;3)修改训练后BP 神经网络部分连接权值,分析连接权值修改前和修改后对相同测试样本测试结果,理解神经网络分布存储等特点。
二、 实验要求按照下面的要求操作,然后分析不同操作后网络输出结果。
1)可修改学习因子2)可任意指定隐单元层数3)可任意指定输入层、隐含层、输出层的单元数4)可指定最大允许误差ε5)可输入学习样本(增加样本)6)可存储训练后的网络各神经元之间的连接权值矩阵;7)修改训练后的BP 神经网络部分连接权值,分析连接权值修改前和修改后对相同测试样本测试结果 。
三、 实验原理1BP 神经网络算法的基本思想误差逆传播(back propagation, BP)算法是一种计算单个权值变化引起网络性能变化的较为简单的方法。
由于BP 算法过程包含从输出节点开始,反向地向第一隐含层(即最接近输入层的隐含层)传播由总误差引起的权值修正,所以称为“反向传播”。
BP 神经网络是有教师指导训练方式的多层前馈网络,其基本思想是:从网络输入节点输入的样本信号向前传播,经隐含层节点和输出层节点处的非线性函数作用后,从输出节点获得输出。
若在输出节点得不到样本的期望输出,则建立样本的网络输出与其期望输出的误差信号,并将此误差信号沿原连接路径逆向传播,去逐层修改网络的权值和节点处阈值,这种信号正向传播与误差信号逆向传播修改权值和阈值的过程反复进行,直训练样本集的网络输出误差满足一定精度要求为止。
2 BP 神经网络算法步骤和流程BP 神经网络步骤和流程如下:1) 初始化,给各连接权{},{}ij jt W V 及阈值{},{}j t θγ赋予(-1,1)间的随机值;2) 随机选取一学习模式对1212(,),(,,)k k k k k k k n k n A a a a Y y y y ==提供给网络;3) 计算隐含层各单元的输入、输出;1n j ij i j i s w a θ==⋅-∑,()1,2,,j j b f s j p ==4) 计算输出层各单元的输入、输出;1t t jt j t j l V b γ==⋅-∑,()1,2,,t t c f l t q ==5) 计算输出层各单元的一般化误差;()(1)1,2,,k k t t tt t t d y c c c t q =-⋅-=6) 计算中间层各单元的一般化误差;1[](1)1,2,,q kk jt jt j j t e d V b b j p ==⋅⋅-=∑7) 修正中间层至输出层连接权值和输出层各单元阈值;(1)()k jt jt t j V iter V iter d b α+=+⋅⋅(1)()k t t t iter iter d γγα+=+⋅8) 修正输入层至中间层连接权值和中间层各单元阈值;(1)()kk ij ij j i W iter W iter e a β+=+⋅⋅(1)()kj j j iter iter e θθβ+=+⋅9) 随机选取下一个学习模式对提供给网络,返回步骤3),直至全部m 个模式训练完毕;10) 重新从m 个学习模式对中随机选取一个模式对,返回步骤3),直至网络全局误差函数E 小于预先设定的一个极小值,即网络收敛;或者,当训练次数大于预先设定值,强制网络停止学习(网络可能无法收敛)。
BP神经网络实验详解(MATLAB实现)

BP神经网络实验详解(MATLAB实现)BP(Back Propagation)神经网络是一种常用的人工神经网络结构,用于解决分类和回归问题。
在本文中,将详细介绍如何使用MATLAB实现BP神经网络的实验。
首先,需要准备一个数据集来训练和测试BP神经网络。
数据集可以是一个CSV文件,每一行代表一个样本,每一列代表一个特征。
一般来说,数据集应该被分成训练集和测试集,用于训练和测试模型的性能。
在MATLAB中,可以使用`csvread`函数来读取CSV文件,并将数据集划分为输入和输出。
假设数据集的前几列是输入特征,最后一列是输出。
可以使用以下代码来实现:```matlabdata = csvread('dataset.csv');input = data(:, 1:end-1);output = data(:, end);```然后,需要创建一个BP神经网络模型。
可以使用MATLAB的`patternnet`函数来创建一个全连接的神经网络模型。
该函数的输入参数为每个隐藏层的神经元数量。
下面的代码创建了一个具有10个隐藏神经元的单隐藏层BP神经网络:```matlabhidden_neurons = 10;net = patternnet(hidden_neurons);```接下来,需要对BP神经网络进行训练。
可以使用`train`函数来训练模型。
该函数的输入参数包括训练集的输入和输出,以及其他可选参数,如最大训练次数和停止条件。
下面的代码展示了如何使用`train`函数来训练模型:```matlabnet = train(net, input_train, output_train);```训练完成后,可以使用训练好的BP神经网络进行预测。
可以使用`net`模型的`sim`函数来进行预测。
下面的代码展示了如何使用`sim`函数预测测试集的输出:```matlaboutput_pred = sim(net, input_test);```最后,可以使用各种性能指标来评估预测的准确性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
完整的python 用BP网络实现的iris数据处理#coding:utf-8from __future__ import divisionimport pandas as pdimport matplotlib.pyplot as pltimport numpy as npfrom sklearn.metrics import roc_auc_scorefrom sklearn.metrics import confusion_matrix################定义激活函数~##########################################def sigmoid_activation(x, theta):x = np.asarray(x)theta = np.asarray(theta)return 1 / (1 + np.exp(-np.dot(theta.T, x)))# 将模型的函数凝结为一个类,这是很好的一种编程习惯class NNet3:# 初始化必要的几个参数def __init__(self, learning_rate=0.5,maxepochs=1e4, convergence_thres=1e-5,hidden_layer=4):self.learning_rate = learning_rateself.maxepochs = int(maxepochs)self.convergence_thres = 1e-5self.hidden_layer = int(hidden_layer)# 计算最终的误差def _multiplecost(self, X, y):# l1是中间层的输出,l2是输出层的结果l1, l2 = self._feedforward(X)# 计算误差,这里的l2是前面的hinner = y * np.log(l2) + (1 - y) * np.log(1 - l2)# 添加符号,将其转换为正值return -np.mean(inner)# 前向传播函数计算每层的输出结果def _feedforward(self, X):# l1是中间层的输出l1 = sigmoid_activation(X.T, self.theta0).T# 为中间层添加一个常数列l1 = np.column_stack([np.ones(l1.shape[0]),l1])# 中间层的输出作为输出层的输入产生结果l2l2 = sigmoid_activation(l1.T, self.theta1)return l1, l2# 传入一个结果未知的样本,返回其属于1的概率def predict(self, X):_, y = self._feedforward(X)return y# 学习参数,不断迭代至参数收敛,误差最小化def learn(self, X, y):nobs, ncols = X.shapeself.theta0 = np.random.normal(0, 0.01,size=(ncols, self.hidden_layer))self.theta1 = np.random.normal(0, 0.01,size=(self.hidden_layer + 1, 1))self.costs = []cost = self._multiplecost(X, y)self.costs.append(cost)costprev = cost + self.convergence_thres + 1counter = 0for counter in range(self.maxepochs):# 计算中间层和输出层的输出l1, l2 = self._feedforward(X)# 首先计算输出层的梯度,再计算中间层的梯度l2_delta = (y - l2) * l2 * (1 - l2)l1_delta = l2_delta.T.dot(self.theta1.T) * l1 * (1 - l1)# 更新参数self.theta1 += l1.T.dot(l2_delta.T) / nobs * self.learning_rateself.theta0 += X.T.dot(l1_delta)[:, 1:] / nobs * self.learning_ratecounter += 1costprev = costcost = self._multiplecost(X, y) # get next costself.costs.append(cost)if np.abs(costprev - cost) <self.convergence_thres and counter > 500:breakif __name__ == '__main__':###################################################数据处理##########################################读取数据##################iris = pd.read_csv("iris.csv")# 打乱数据顺序################shuffled_rows = np.random.permutation(iris.index) iris = iris.iloc[shuffled_rows]print(iris.species.unique())# 添加一个值全为1的属性iris["ones"],截距iris["ones"] = np.ones(iris.shape[0])X = iris[['ones', 'sepal_length', 'sepal_width', 'petal_length', 'petal_width']].values# 将Iris-versicolor类标签设置为1,Iris-virginica设置为0y = (iris.species == 'Iris-versicolor').values.astype(int)# First 70 rows to X_train and y_train# Last 30 rows to X_train and y_trainX_train = X[:70]y_train = y[:70]X_test = X[-30:]y_test = y[-30:]###################################################训练模型################################### Set a learning ratelearning_rate = 0.5# Maximum number of iterations for gradientdescentmaxepochs = 10000# Costs convergence threshold, ie. (prevcost - cost) > convergence_thresconvergence_thres = 0.00001# Number of hidden unitshidden_units = 8# Initialize modelmodel = NNet3(learning_rate=learning_rate, maxepochs=maxepochs,convergence_thres=convergence_thres, hidden_layer=hidden_units)model.learn(X_train, y_train)train_yhat = model.predict(X_train)[0]print(y_train)print(train_yhat)train_auc = roc_auc_score(y_train, train_yhat) print(train_auc)########################################预测数据############################### 因为predict返回的是一个二维数组,此处是(1,30),取第一列作为一个列向量yhat = model.predict(X_test)[0]print(y_test)print(yhat)predict=[]for each in yhat:if each>0.5:predict.append(1)else:predict.append(0)print(predict)auc = roc_auc_score(y_test, yhat)print(auc)#################################写出数据################################################合并各列数据#########################result=np.column_stack([X_test,y_test,predict]) print (result)count=0for i in range(0,len(result)):if result[i,5]==result[i,6]:count+=1################计算准确率#############################print(count,len(result))acurate=count/len(result)print("分类正确率是:%.2f%%" % (acurate * 100))labels = list(set(predict))print(labels)conf_mat = confusion_matrix(y_test, predict, labels=labels)print(conf_mat)#####################数组转换为数据框##########################result=pd.DataFrame(result[:,1:])result.columns = ['sepal_length','sepal_width','petal_length', 'petal_width','species', 'predict']print(result)#########################写出数据到excel################summaryDataFrame = pd.DataFrame(result)# summaryDataFrame.to_excel(filePath,summaryDataFrame.to_excel('iris_test.xlsx', encoding='utf-8', index=False)# Plot costsplt.plot(model.costs,color="red")plt.title("Convergence of the Cost Function") plt.ylabel("J($\Theta$)")plt.xlabel("Iteration")plt.show()。