python神经网络之实现双层感知器和神经网络感知器算法将鸢尾分类

简介: python神经网络之实现双层感知器和神经网络感知器算法将鸢尾分类

1.问题描述:实现一个简单的只有输入层和输出层的前馈神经网络,输入数据与输出数据有下面的对应关系


[0,0,1]->0


[0,1,1]->1


[1,0,1]->0


[1,1,1]->1


从数据可以看出 输入层只有三个神经元 输出层只有一个神经元


由下图可以看出 随着训练次数的增加 误差在逐渐减小并收敛

1666431460191.jpg

代码如下

import  numpy as np
def sigmoid(x):
    return (1/(1+np.exp(-x)))
def dsigmoid(y):
    return  y*(1-y)
x=np.array([[0,0,1],
           [0,1,1],
           [1,0,1],
           [1,1,1]])
y=np.array([0,1,0,1]).T
w0=np.random.random((3,4))
print(w0)
b0=0.5
lrate=0.3
for epochs in range(20):
    inx=x
    outy=sigmoid(np.dot(inx,w0)+b0)
    w0+=lrate*np.dot(inx.T,2*(y-outy)*dsigmoid(outy))
    b0+=lrate*2*(y-outy)*dsigmoid(outy)
    err=(y-outy)*(y-outy)
    print("epochs=",epochs+1,"error is",err.T)


2:使用神经网络感知器算法进行鸢尾花分类


问题描述:定义一个神经网络算法 对鸢尾花进行分类,使用iris数据集中的花瓣长度和花萼长度两个特征


要求:构造神经网络类,学习率为0.2,初始权重和截距为0,利用误差反向传播算法,对权重和截距进行更新


可视化和结果如下

1666431526076.jpg

1666431537934.jpg


输出结果显示 算法迭代四次以后,得到一个比较稳定的权重参数[1.4,-3.68]这个权重参数保持不变一直到第十次迭代  同样大家可以修改学习率和迭代次数来观察结果变化


代码如下

import  numpy as np
import  pandas as pd
import  matplotlib.pyplot as plt
class ANNnet(object):
    def __init__(self,lrate=0.2,epochs=10):
        self.lrate=lrate
        self.epochs=epochs
    def train(self,x,y):
        self.weight=np.zeros(x.shape[1])
        print('initial weight',self.weight)
        self.b=0
        for i in range(self.epochs):
            for x,y in zip(x,y):
                delta=self.lrate*(y-self.predict(x))
                self.weight[:]+=delta*x
                self.b+=delta
            print('weight after',i+1,'epochs',self.weight)
    def net_input(self,x):
        return x
    def predict(self,x):
        y=np.dot(x,self.weight[:])+self.b
        return  np.where(y>=0,1,-1)
print('step1 加载数据')
df=pd.read_csv(r'iris.csv',header=None)
print('step 2 可视化')
y=df.loc[0:,4].values
y=np.where(y=='setosa',1,-1)
x=df.iloc[0:,[0,2]].values
plt.scatter(x[:50,0],x[:50,1],color="red",marker='o',label='Setosa')
plt.scatter(x[50:,0],x[50:,1],color="blue",marker='o',label='Vresicolor or Virginica')
plt.xlabel("petal length")
plt.ylabel("sepal length")
plt.legend(loc='upper left')
plt.show()
print('step3 构建神经网络')
pr=ANNnet()
print('step4:fitting')
pr.train(x,y)
print('step5 predicting')
print('iris1 result',pr.predict([5.1,1.4]))
print('iris2 result',pr.predict([7,4.7]))
print('iris3 result',pr.predict([5.9,5.1]))
相关文章
|
14天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
72 4
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
15天前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
|
17天前
|
机器学习/深度学习 算法 PyTorch
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
软演员-评论家算法(Soft Actor-Critic, SAC)是深度强化学习领域的重要进展,基于最大熵框架优化策略,在探索与利用之间实现动态平衡。SAC通过双Q网络设计和自适应温度参数,提升了训练稳定性和样本效率。本文详细解析了SAC的数学原理、网络架构及PyTorch实现,涵盖演员网络的动作采样与对数概率计算、评论家网络的Q值估计及其损失函数,并介绍了完整的SAC智能体实现流程。SAC在连续动作空间中表现出色,具有高样本效率和稳定的训练过程,适合实际应用场景。
72 7
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
|
14天前
|
存储 监控 算法
局域网网络管控里 Node.js 红黑树算法的绝妙运用
在数字化办公中,局域网网络管控至关重要。红黑树作为一种自平衡二叉搜索树,凭借其高效的数据管理和平衡机制,在局域网设备状态管理中大放异彩。通过Node.js实现红黑树算法,可快速插入、查找和更新设备信息(如IP地址、带宽等),确保网络管理员实时监控和优化网络资源,提升局域网的稳定性和安全性。未来,随着技术融合,红黑树将在网络管控中持续进化,助力构建高效、安全的局域网络生态。
38 9
|
20天前
|
机器学习/深度学习 算法
基于遗传优化的双BP神经网络金融序列预测算法matlab仿真
本项目基于遗传优化的双BP神经网络实现金融序列预测,使用MATLAB2022A进行仿真。算法通过两个初始学习率不同的BP神经网络(e1, e2)协同工作,结合遗传算法优化,提高预测精度。实验展示了三个算法的误差对比结果,验证了该方法的有效性。
|
21天前
|
算法 网络协议 Python
探秘Win11共享文件夹之Python网络通信算法实现
本文探讨了Win11共享文件夹背后的网络通信算法,重点介绍基于TCP的文件传输机制,并提供Python代码示例。Win11共享文件夹利用SMB协议实现局域网内的文件共享,通过TCP协议确保文件传输的完整性和可靠性。服务器端监听客户端连接请求,接收文件请求并分块发送文件内容;客户端则连接服务器、接收数据并保存为本地文件。文中通过Python代码详细展示了这一过程,帮助读者理解并优化文件共享系统。
|
17天前
|
传感器 算法
基于GA遗传优化的WSN网络最优节点部署算法matlab仿真
本项目基于遗传算法(GA)优化无线传感器网络(WSN)的节点部署,旨在通过最少的节点数量实现最大覆盖。使用MATLAB2022A进行仿真,展示了不同初始节点数量(15、25、40)下的优化结果。核心程序实现了最佳解获取、节点部署绘制及适应度变化曲线展示。遗传算法通过初始化、选择、交叉和变异步骤,逐步优化节点位置配置,最终达到最优覆盖率。
|
机器学习/深度学习 算法 测试技术
可变多隐层神经网络的python实现
说明:这是我对网上代码的改写版本,目的是使它跟前一篇提到的使用方法尽量一致,用起来更直观些。   此神经网络有两个特点: 1、灵活性 非常灵活,隐藏层的数目是可以设置的,隐藏层的激活函数也是可以设置的   2、扩展性 扩展性非常好。
1253 0
|
1月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!

热门文章

最新文章