# _*_ coding:utf-8 _*_
import numpy as np
class Gzj(object):
def __init__(self,step=0.1,times=20):
self.step = step #学习率
self.times = times#学习次数
self.w = None
def fit(self,train_data,train_target):
self.w = np.zeros(1+train_data.shape[1])
for _ in range(self.times):
for data,target in zip(train_data,train_target):
update = self.step*(target-self.predict(data))
self.w[1:] += data* update
self.w[0] += update
return self
def predict(self,test_data):
return np.where(np.dot(test_data,self.w[1:])+self.w[0]>=0,1,-1)
if __name__=='__main__':
x_train = np.array([[1, 2], [2, 1], [2, 3], [3, 5], [1, 3], [4, 2], [7, 3], [4, 5], [11, 3], [8, 7]])
y_train = np.array([1, 1, -1, -1, 1, -1, -1, 1, -1, 1])
clf = Gzj()
tt = clf.fit(x_train,y_train)
print(tt.w)
a = clf.predict([4,3])
print(a)
原文连接:https://blog.youkuaiyun.com/wangyangzhizhou/article/details/71170343
实现感知机的学习
最新推荐文章于 2025-07-01 11:10:49 发布