用 Python 从头开始​​实现感知器

用 python 从头开始​​实现感知器

开发者们大家好,

感知器是机器学习中最简单、最基本的概念之一。它是构成神经网络基础的二元线性分类器。在这篇文章中,我将逐步介绍使用 python 从头开始​​理解和实现感知器的步骤。

让我们开始吧!

什么是感知器?

a 感知器 是二元分类器监督学习的基本算法。给定输入特征,感知器学习权重,帮助基于简单的阈值函数分离类别。简单来说它的工作原理如下:

立即学习“Python免费学习笔记(深入)”;

输入:特征向量(例如,[x1, x2])。权重:每个输入特征都有一个权重,模型根据模型的表现来调整权重。激活函数:计算输入特征的加权和并应用阈值来决定结果是否属于一个类或另一类。

从数学上来说,它看起来像这样:

f(x) = w1*x1 + w2*x2 + … + wn*xn + b

地点:

f(x) 是输出,w代表权重,x 代表输入特征,b 是偏差项。

如果 f(x) 大于或等于阈值,则输出为类别 1;否则,它是 0 类。

第 1 步:导入库

这里我们将仅使用 numpy 进行矩阵运算,以保持轻量级。

import numpy as np

第 2 步:定义感知器类

我们将把感知器构建为一个类,以保持一切井井有条。该课程将包括训练和预测方法。

class perceptron:    def __init__(self, learning_rate=0.01, epochs=1000):        self.learning_rate = learning_rate        self.epochs = epochs        self.weights = none        self.bias = none    def fit(self, x, y):        # number of samples and features        n_samples, n_features = x.shape        # initialize weights and bias        self.weights = np.zeros(n_features)        self.bias = 0        # training        for _ in range(self.epochs):            for idx, x_i in enumerate(x):                # calculate linear output                linear_output = np.dot(x_i, self.weights) + self.bias                # apply step function                y_predicted = self._step_function(linear_output)                # update weights and bias if there is a misclassification                if y[idx] != y_predicted:                    update = self.learning_rate * (y[idx] - y_predicted)                    self.weights += update * x_i                    self.bias += update    def predict(self, x):        # calculate linear output and apply step function        linear_output = np.dot(x, self.weights) + self.bias        y_predicted = self._step_function(linear_output)        return y_predicted    def _step_function(self, x):        return np.where(x >= 0, 1, 0)

在上面的代码中:

fit:此方法通过在错误分类点时调整权重和偏差来训练模型。预测:此方法计算新数据的预测。_step_function:此函数应用阈值来确定输出类别。

第 3 步:准备一个简单的数据集

我们将使用一个小数据集来轻松可视化输出。这是一个简单的与门数据集:

# and gate datasetx = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])y = np.array([0, 0, 0, 1])  # labels for and gate

第 4 步:训练和测试感知器

现在,让我们训练感知器并测试它的预测。

# initialize perceptronp = perceptron(learning_rate=0.1, epochs=10)# train the modelp.fit(x, y)# test the modelprint("predictions:", p.predict(x))

与门的预期输出:

Predictions: [0 0 0 1]

感知器学习过程的解释

初始化权重和偏差:开始时,权重设置为零,这允许模型从头开始学习。计算线性输出:对于每个数据点,感知器计算输入的加权和加上偏差。激活(step function):如果线性输出大于或等于0,则分配类别1;否则,它分配类 0。更新规则:如果预测不正确,模型会朝减少误差的方向调整权重和偏差。更新规则由下式给出:权重 += 学习率 * (y_true – y_pred) * x

这使得感知器仅更新错误分类的点,逐渐推动模型更接近正确的决策边界。

可视化决策边界

训练后可视化决策边界。如果您正在处理更复杂的数据集,这尤其有用。现在,我们将使用 and 门让事情变得简单。

扩展到多层感知器 (mlp)

虽然感知器仅限于线性可分离问题,但它是多层感知器 (mlp) 等更复杂神经网络的基础。通过 mlp,我们添加隐藏层和激活函数(如 relu 或 sigmoid)来解决非线性问题。

概括

感知器是一种简单但基础的机器学习算法。通过了解它的工作原理并从头开始实施它,我们深入了解机器学习和神经网络的基础知识。感知器的美妙之处在于它的简单性,使其成为任何对人工智能感兴趣的人的完美起点。

以上就是用 Python 从头开始​​实现感知器的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1350407.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 15:02:29
下一篇 2025年12月13日 15:02:50

相关推荐

发表回复

登录后才能评论
关注微信