栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

第一个小算法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第一个小算法

Rosenblatt感知器原始算法,激活函数为hardlims. 

import numpy as np
import matplotlib.pyplot as plt


# 感知机学习算法的原始形式
# 输入T={(x1, y1), (x2, y2), (x3, y3)}, y属于{1,-1};学习率为lr
# 输出w, b; 感知机模型 f(x)=hardlims(w*x+b) 其中w*x表示w与x的内积
# hardlims为激活函数,当w*x+b>=0时,为1,否则为-1
def Perceptron_algorithm():
    # 训练集
    x1 = np.array([4, 4]).T
    x2 = np.array([4, 5]).T
    x3 = np.array([1, 1]).T
    input = [x1, x2, x3]
    y = [1, 1, -1]

    # 初始化w,b,lr
    w = np.array([0,0])
    b = 1
    lr = 1
    T = 0

    while True:
        num_errors = 0
        for i in range(3):
            # 激活函数 hardlims
            y_hat = np.dot(w,input[i]) + b
            if y_hat >= 0:
                y_hardline = 1
            else:
                y_hardline = -1

            # 判断是否误分类
            if y_hardline != y[i]:
                # 利用随机梯度下降算法,更新w,b
                w += lr * y[i] * input[i].T
                b += lr * y[i]
                # 误分类个数加1
                num_errors += 1
                T += 1


        # M中为空训练结束
        if num_errors == 0:
            print(w, b,T)
            break

    


if __name__ == '__main__':
    Perceptron_algorithm()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/331191.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号