import os
import sys
from numpy import *
# import numpy as np
# reload(sys)
# sys.setdefaultencoding('utf-8')
#首先将书上的训练集输入
def loadDataset():
dataSet=[[3,3],[4,3],[1,1]]
labels=[1,1,-1]
return dataSet,labels
#定义sign函数
def function_sign(x):
if(x>=0):
return 1
else:
return -1
#算法主程序
def perception(dataSet,labels):
# 将数据集转换成矩阵用于计算
dataMat=mat(dataSet)
m,n=shape(dataMat)
#创建与示例维度相同的初始化w
w=mat(zeros((n,1)))
b=0
#当预测结果与实际结果不符时则循环更新w,b
while([function_sign(i) for i in array(dataMat*w+b)])!=labels:
for i in range(m):
if (labels[i]*(dataMat[i]*w+b)<=0):
w+=labels[i]*dataMat[i].T
b+=labels[i]
return w,b
#输出运行结果
dataSet,labels=loadDataset()
w,b=perception(dataSet,labels)
print(w,'\n',b)
输出:
[[1.]
[1.]]
-3
网友评论