分享个python实例,自己写的一个感知机,仅供学习,自行调整参数,修改代码!
效果图:

代码分享:
import numpy as np
import matplotlib.pyplot as plt
class Perceptron(object):
"""
根据课上所学,实现了一个感知机,包括AND, OR, NOT, 可以使用正态分布的样本数据
感知机原理可参考:https://zhuanlan.zhihu.com/p/29836398 https://zhuanlan.zhihu.com/p/42438035
https://blog.youkuaiyun.com/u012759262/article/details/101943109
"""
def __init__(self, kind='AND'):
self.weights = np.array([0.2, 0.4], ndmin=2) # 初始化权重,为图方便硬编码了
self.bias = 0.1 # 初始化偏置,为图方便硬编码了
self.inputs = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]) # (m,2)矩阵 m:=dataSize,每个样本数据为二维,即2个特征,(f1, f2)
if kind.upper() == 'AND':
self.labels = np.array([[-1], [-1], [-1], [1]]) # AND (m,1)矩阵
elif kind.upper() == 'OR':
self.labels = np.array([[-1], [1], [1], [1]]) # OR
elif kind.upper() == 'NOT':
# NOT, w2 cannot be zero, let w1 be zero, so have to make labels like this
self.labels = np.array([[-1], [1], [-1], [1]])
else: # default is AND perceptron
self.labels = np.array([[-1], [-1], [-1], [1]]) # AND (m,1)矩阵
self.dataSize = self.labels.size
self.misclassifiedSet = np.array(np.zeros((self.dataSize, 1), dtype=int)) # 错分集标识初始化,(m,1)矩阵
self.learningRate = 0.1 # adjust this when necessary
self.errors = np.array([]) # errors in each iteration
self.fig, self.axes = plt.subplots(1, 2) # for plotting diagram
self.</
Python实现感知机与可视化

该博客分享了一个使用Python实现的感知机类,适用于AND、OR、NOT操作。代码中包含了权重和偏置的初始化、激活函数、训练过程、错误曲线绘制等功能,并提供了高斯正态分布数据生成的示例。通过可视化展示决策边界和训练过程,便于理解感知机的工作原理。
最低0.47元/天 解锁文章
646

被折叠的 条评论
为什么被折叠?



