实现感知机的学习

本文介绍了一个简单的感知机算法实现过程,使用Python编程语言定义了一个名为Gzj的类,通过调整学习率和迭代次数来训练模型。该感知机能够处理二分类问题,并演示了如何用训练好的模型进行预测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# _*_ 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值