博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[学习笔记]适应行线性神经元基本原理
阅读量:4147 次
发布时间:2019-05-25

本文共 2129 字,大约阅读时间需要 7 分钟。

1.学习笔记来源

Demo下载

2.自适应线性神经元

数位动态调整数据参数,让实际结果和预测结果动态调整,让其更加准确

自适应线性神经元

3.和方差公式

不断调整w参数,使得输入数据j(w)最小,这样预测数据就越精确

和方差公式

4.渐进下降法

Jw 作一个偏导数Gradinet,如果切线斜率是正,减少斜率则Jmin越小。

  1. 斜率 > 0, 减小神经元数值
  2. 斜率 < 0, 增大神经元数值
    j(w)最小,这样预测数据就越精确

渐进下降法

5.和方差求偏导数

和方差求偏导数

6.神经元参数更新

统计学的公式

神经元参数更新

7.相应代码

#!/usr/bin/env python3# -*- coding: utf-8 -*-import numpy as np'''适应性神经元'''class AdalineGD(object):    '''    eta : 学习效率,取值范围[0,1]    n_iter: 对训练数据进行学习改进次数    w:一维向量,存储权重数值    error_:存储每次迭代改进时,网络对数据进行错误判断的次数    '''    def __init__(self, eta=0.01, n_iter=50):        self.eta = eta        self.n_iter = n_iter    def fit(self, X, y):        '''        X : 二维数组 [n_smapls, n_features]        n_smapls 表示 X 中含有的训练数据条目数        n_features 含有4个数据的一维向量,用于表示一条训练条目        y : 一维向量,用于存储每一条训练条目对应的正确分类        '''        # 初始化权重向量为0        self.w_ = np.zeros(1 + X.shape[1])        # 用于得到改进后的值,判断改进的效果多大        self.const_ = []        for i in range(self.n_iter):            # output = w0 + w1*x1 + ... + wn*xn            output = self.net_input(X)            errors = (y - output)            # 和方差公式-和方差偏导数            self.w_[1:] += self.eta * X.T.dot(errors)            self.w_[0] += self.eta * errors.sum()            # 改进后的成本,越小,改进效果越有效            cost = (errors ** 2).sum() / 2.0            self.cost_.append(cost)        return self    def net_input(self, X):        return np.dot(X, self.w_[1:]) + self.w_[0]    def activation(self, X):        return self.net_input(X)    def predict(self, X):        return np.where(self.activation(X) >= 0, 1, -1)

8.图形化显示

# 初始化神经网络对象,其中学习率越小和迭代的次数越多,预测的权重越精确ada = AdalineGD(eta=0.0001, n_iter=50)# 加载数据原料import pandas as pdimport numpy as np# 数据可视化展示import matplotlib.pyplot as pltfile = "D:/EclipseProject/PythonStudyBySu/su/iris.data.csv"# 无文件头df = pd.read_csv(file, header=None)# 抽取出第0和2列的数据X = df.iloc[0:100, [0, 2]].valuesy = df.loc[0:99, 4].valuesy = np.where(y == "Iris-setosa", -1, 1)ada.fix(X, y)plot_decision_regions(X, y, classifier=ada)plt.title("Adline")plt.xlabel("x")plt.ylabel("y")plt.legend(loc='upper left')plt.show()# 错误判断的统计次数plt.plot(range(1, len(ada.cost_) + 1), ada.cost_, marker='o')plt.xlabel("error_x")plt.ylabel("error_y")plt.show()

9.运行结果

适应行线性神经元基本原理

你可能感兴趣的文章
Linux分区方案
查看>>
如何使用 systemd 中的定时器
查看>>
git命令速查表
查看>>
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(三):OpenFeign配置生成代理对象
查看>>
OpenFeign学习(四):OpenFeign的方法同步请求执行
查看>>
OpenFeign学习(六):OpenFign进行表单提交参数或传输文件
查看>>
Ribbon 学习(二):Spring Cloud Ribbon 加载配置原理
查看>>
Ribbon 学习(三):RestTemplate 请求负载流程解析
查看>>
深入理解HashMap
查看>>
XML生成(一):DOM生成XML
查看>>
XML生成(三):JDOM生成
查看>>
Ubuntu Could not open lock file /var/lib/dpkg/lock - open (13:Permission denied)
查看>>
collect2: ld returned 1 exit status
查看>>
C#入门
查看>>
C#中ColorDialog需点两次确定才会退出的问题
查看>>
数据库
查看>>
nginx反代 499 502 bad gateway 和timeout
查看>>
linux虚拟机安装tar.gz版jdk步骤详解
查看>>
python实现100以内自然数之和,偶数之和
查看>>