感知机
感知机是二类分类的线形模型,输入为实例的特征向量,输出为实例的类别,取值为-1/+1两种值。
感知机对应于输入空间的特征向量,将其中的实例划分为正负两类的分离超平面,属于判别模型。
目的:旨在求出将训练数据进行线形划分的分离超平面。
前提条件:数据集是线形可分类的。(例如:XOR规则就是线形不可分的。)
损失函数:基于无分类的距离超平面的距离和函数。
学习算法:基于损失函数的固定梯度,沿着梯度方向,上升最快,反之负方向下降最快。由于损失函数的非负性,修改w和b,使得逼近损失函数的梯度的负方向,从而使损失函数逐渐逼近于0,来达到划分平面的目的。
#机器学习 感知机原始形式学习代码
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
#Data_set=np.array([[3,3,1],[4,3,1],[1,1,-1]])
Data_set=np.array([[3,3,1],[4,3,1],[1,1,-1],[1,2,1],[5,4,1],[4,1,-1],[6,2,-1],[0,3,1]])
#Data_set[1,0:2]
w=np.array([0,0])
b=0
theta=1
history=[]
def ganzhiji(dataset):
global w,b,theta,history
s=dataset.shape[0]
history.append([w,b])
for i in range(s):
if(dataset[i,2]*(np.dot(w,dataset[i,0:2])+b)<=0):
w=w+theta*dataset[i,2]*dataset[i,0:2]
b=b+theta*data