感知机算法实现-python

简介: 笔记

一.Python实现《李航统计学》第二章感知机算法。

先来说一下算法原原理吧:


1.感知机由输入空间到输出空间的函数为:


y=sign(w∗x+b)


sign(x)=+1(x>=0)


sign(x)=−1(x<0)

算法实现的步骤如下:


1.初始化w,b

2.遍历数据(x,y)

3.如果遇到sign(w*x(i)+b)!= y(i),则更新w,b


w=w+learning−rate∗y(i)∗x(i)


b=b+learning−rate∗y(i)

4.然后结束本次遍历,转至步骤2,知道数据中没有分类错误的点存在。

import numpy as np
x = np.array([
  [3,3],
  [4,3],
  [1,1]
])
y = np.array([1,1,-1])
w = np.array([1,1])
b = 0
learning_rate = 0.1
for i in range(10):
  temp = -1
  for j in range(x.shape[0]):
    pred = np.sign(np.dot(w,x[j])+b)   
    if pred != y[j]:
      temp = j
      break
  if temp != -1:
    w = w + learning_rate*x[temp]*y[temp]
    b = b + learning_rate*y[temp]

基本迭代几次就可以得到该平面了。

版本二:

import numpy as np
def process(x,y,learning_rate=0.01,epoch=100):
    w = np.ones_like(x[1])
    b = 1
    for i in range(epoch):
        temp = -1
        for j in range(x.shape[0]):
            pred = np.sign(np.dot(w,x[j])+b)
            if pred != y[j]:
                temp = j
                break
        if temp != -1:
            w = w + learning_rate * x[temp] * y[temp]
            b = b + learning_rate * y[temp]
x = np.array([
  [3,3],
  [4,3],
  [1,1]
])
y = np.array([1,1,-1])
process(x,y,1,10)

版本三:

import numpy as np
class Perceptron:
    def fit(self,x,y,learning_rate=0.1, epoch=100):
        self.x = x
        self.y = y
        self.learning_rate = learning_rate
        self.epoch = epoch
        self.w = np.ones_like(x[1])
        self.b = 1
        for i in range(self.epoch):
            temp = -1
            for j in range(self.x.shape[0]):
                pred = np.sign(np.dot(self.w, self.x[j]) + self.b)
                if pred != self.y[j]:
                    temp = j
                    break
            if temp != -1:
                self.w = self.w + self.learning_rate * self.x[temp] * self.y[temp]
                self.b = self.b + self.learning_rate * self.y[temp]
    def pred(self,x):
        return np.sign(np.dot(self.w,x)+self.b)
x = np.array([
  [3,3],
  [4,3],
  [1,1]
])
y = np.array([1,1,-1])
a = Perceptron()
a.fit(x,y,1)
print(a.pred(np.array([1,1])))

上面以三种不同形式的代码实现了感知机,随着以后的深入学习,还会继续完善这些代码。

Thank for your reading !!!


公众号:FPGA之旅



目录
相关文章
|
7天前
|
机器学习/深度学习 人工智能 算法
海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow
海洋生物识别系统。以Python作为主要编程语言,通过TensorFlow搭建ResNet50卷积神经网络算法,通过对22种常见的海洋生物('蛤蜊', '珊瑚', '螃蟹', '海豚', '鳗鱼', '水母', '龙虾', '海蛞蝓', '章鱼', '水獭', '企鹅', '河豚', '魔鬼鱼', '海胆', '海马', '海豹', '鲨鱼', '虾', '鱿鱼', '海星', '海龟', '鲸鱼')数据集进行训练,得到一个识别精度较高的模型文件,然后使用Django开发一个Web网页平台操作界面,实现用户上传一张海洋生物图片识别其名称。
86 7
海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow
|
7天前
|
机器学习/深度学习 人工智能 算法
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
昆虫识别系统,使用Python作为主要开发语言。通过TensorFlow搭建ResNet50卷积神经网络算法(CNN)模型。通过对10种常见的昆虫图片数据集('蜜蜂', '甲虫', '蝴蝶', '蝉', '蜻蜓', '蚱蜢', '蛾', '蝎子', '蜗牛', '蜘蛛')进行训练,得到一个识别精度较高的H5格式模型文件,然后使用Django搭建Web网页端可视化操作界面,实现用户上传一张昆虫图片识别其名称。
130 7
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
|
8天前
|
机器学习/深度学习 人工智能 算法
【球类识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+TensorFlow
球类识别系统,本系统使用Python作为主要编程语言,基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集 '美式足球', '棒球', '篮球', '台球', '保龄球', '板球', '足球', '高尔夫球', '曲棍球', '冰球', '橄榄球', '羽毛球', '乒乓球', '网球', '排球'等15种常见的球类图像作为数据集,然后进行训练,最终得到一个识别精度较高的模型文件。再使用Django开发Web网页端可视化界面平台,实现用户上传一张球类图片识别其名称。
101 7
【球类识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+TensorFlow
|
4天前
|
算法 数据中心 Python
基于python雪花算法工具类Snowflake-来自chatGPT
基于python雪花算法工具类Snowflake-来自chatGPT
15 4
|
10天前
|
机器学习/深度学习 算法 BI
机器学习笔记(一) 感知机算法 之 原理篇
机器学习笔记(一) 感知机算法 之 原理篇
|
10天前
|
存储 算法 Python
python常用算法(5)——树,二叉树与AVL树(一)
python常用算法(5)——树,二叉树与AVL树
|
12天前
|
算法 数据可视化 Python
Python中的决策树算法探索
Python中的决策树算法探索
|
16天前
|
存储 算法 调度
力扣中级算法(Python)
力扣中级算法(Python)
|
16天前
|
算法 Python
力扣初级算法(Python)(二)
力扣初级算法(Python)(二)
|
17天前
|
搜索推荐 算法 UED
基于Python的推荐系统算法实现与评估
本文介绍了推荐系统的基本概念和主流算法,包括基于内容的推荐、协同过滤以及混合推荐。通过Python代码示例展示了如何实现基于内容的推荐和简化版用户-用户协同过滤,并讨论了推荐系统性能评估指标,如预测精度和覆盖率。文章强调推荐系统设计的迭代优化过程,指出实际应用中需考虑数据稀疏性、冷启动等问题。【6月更文挑战第11天】
61 3