感知机和adaline的简单代码实现

简单说明

相对于感知机,Adaline算法有趣的多,因为在学习Adaline的过程中涉及到机器学习中一个重要的概念:定义、最小化损失函数。学习Adaline为以后学习更复杂高端的算法(比如逻辑斯蒂回归、SVM等)起到抛砖引玉的作用。

Adaline和感知机的一个重要区别是Adaline算法中权重参数更新按照线性激活函数而不是单位阶跃函数。

实现

下面用python来实现简单的感知机模型和adaline模型

感知机

import numpy as np
class Perceptron(object):

    def __init__(self,eta = 0.1,n_iter = 10):
        self.eta = eta
        self.n_iter = n_iter

    def fit(self,X,y):
        self.w_ = np.zeros(1+X.shape[1])
        self.errors = []

        for _ in range(self.n_iter):
            errors = 0
            for feature, target in zip(X, y):
                update =target - self.predict(feature)
                self.w_[1:] += update*feature
                self.w_[0]  += update
                errors += int(update != 0.0)

            self.errors.append(errors)


    def net_input(self,X):
        return np.dot(X,self.w_[1:]+self.w_[0])


    def predict(self,X):
        return np.where(self.net_input(X)>0.0,1,-1)

adaline

import numpy as np

class Adaline(object):
    def __init__(self,eta = 0.1,n_iter = 10):
        self.eta = eta
        self.n_iter = n_iter

    def fit(self,X,y):
        self.w_ = np.zeros(1+X.shape[1])
        self.cost_ = []

        for i in range(self.n_iter):
            output = self.predit(X)
            errors = y - output
            self.w_[1:] = self.eta * X.T.dot(errors)
            self.w_[0] = self.eta * errors.sum()
            cost = (errors ** 2).sum()/2.0
            self.cost_.append(cost)

        return self


    def predit(self,X):
        return np.dot(X,self.w_[1:])+self.w_[0]


    def predict(self, X):
        return np.where(self.predit(X) > 0.0, 1, -1)

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值