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]))
相关文章
|
机器学习/深度学习 算法 安全
【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
503 0
|
11月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
机器学习/深度学习 算法 PyTorch
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
319 1
|
机器学习/深度学习 算法 PyTorch
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
467 0
|
存储 监控 算法
基于 Python 跳表算法的局域网网络监控软件动态数据索引优化策略研究
局域网网络监控软件需高效处理终端行为数据,跳表作为一种基于概率平衡的动态数据结构,具备高效的插入、删除与查询性能(平均时间复杂度为O(log n)),适用于高频数据写入和随机查询场景。本文深入解析跳表原理,探讨其在局域网监控中的适配性,并提供基于Python的完整实现方案,优化终端会话管理,提升系统响应性能。
434 4
|
机器学习/深度学习 算法 调度
基于遗传算法GA算法优化BP神经网络(Python代码实现)
基于遗传算法GA算法优化BP神经网络(Python代码实现)
739 0
|
机器学习/深度学习 数据采集 TensorFlow
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
658 0
|
数据采集 存储 监控
Python 原生爬虫教程:网络爬虫的基本概念和认知
网络爬虫是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据采集、新闻聚合和价格监控等领域。其工作流程包括 URL 调度、HTTP 请求、页面下载、解析、数据存储及新 URL 发现。Python 因其丰富的库(如 requests、BeautifulSoup、Scrapy)和简洁语法成为爬虫开发的首选语言。然而,在使用爬虫时需注意法律与道德问题,例如遵守 robots.txt 规则、控制请求频率以及合法使用数据,以确保爬虫技术健康有序发展。
1711 31
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
559 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
1535 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能

热门文章

最新文章

推荐镜像

更多