統計の3つの要素に従って記述されたパーセプトロンモデル:
モデル:シンボリック関数
戦略:損失関数;エラーポイントから超平面までの距離の合計
アルゴリズム:勾配降下アルゴリズムを使用して
パーセプトロンの原理を解きます:
パーセプトロンモデルが使用されますデータセットを線形に識別するには超平面を使用して2つの異なるカテゴリを分離することを意味します。超平面は2次元データセットの直線であり、3次元データセットの平面です。nがあると仮定します。 -次元データの場合、分割された超平面は(n-1)次元です。次の図に示す2次元および3次元の場合、青い部分は超平面です。
分類を行うためにこの超平面を見つける方法。ここでは、計算された点から超平面までの距離の合計が次のように使用されます。損失関数。
点からこの超平面までの距離の式は次のように導き出されます。
これにより、パーセプトロンモデルを記述できます。怠惰であることを許してください、ここで写真を入手してください、写真ソース(統計的学習方法)
# coding:utf-8
"""
@author:Darren
@file:perceptron.py
@time:2020/1/14
"""
import numpy as np
class Perceptron:
def __init__(self, x, y, n, eta):
self.x = x # 实例点
self.y = y # 实例点的分类
self.n = n # 实例点个数
self.eta = eta # 学习率
# 随机梯度下降法
def SGD(self):
# 对w,b取初值
w = np.array([0, 0])
b = 0
# 记录一次迭代是否有误分类点
flag = 1
while flag == 1:
flag = 0
for i in range(n):
# 如果有误分类点
if self.y[i] * (w.dot(self.x[i]) + b) <= 0:
# 更新w,b,设置flag为1
w = w + self.eta * self.y[i] * self.x[i]
b = b + self.eta * self.y[i]
flag = 1
return w, b
if __name__ == "__main__":
x = np.array([[3, 3], [4, 3], [1, 1]])
y = np.array([1, 1, -1])
n = 3
eta = 1
perceptron = Perceptron(x, y, n, eta)
w, b = perceptron.SGD()
print("w is",w)
print("b is",b)
結果
w is [1 1]
b is -3