深度学习中简单神经网络的实现

import numpy as np
class Perceptron(object):
    """
    eta:学习率
    n_iter:权重向量的训练次数
    w_:神经分叉权重向量
    errors_:用于记录神经元判断出错次数
    """
    def __init__(self,eta=0.01,n_iter=10):
        self.eta=eta;
        self.n_iter=n_iter
        pass
    def net_input(self, X):
            """
             z = W0*1+W1*X1 + ...+Wn*Xn
            """
            return np.dot(X, self.w_[1:]) + self.w_[0]
            pass

    def predict(self, X):
        return np.where(self.net_input(X) >= 0.0 , 1, -1)
        pass
    def fit(self,X,y):
        """
        输入训练数据,培训神经元,X输入样本向量,y对应样本分类
        X:shape[n_samples,n_features]
        X:[[1,2,3],[4,5,6]]
        n_samples:2
        n_features:3
        y:[1,-1]
        """
        """
        初始化权重向量为0
        加一是因为前面算法提到的w0,也就是步调函数阈值
        """
        self.w_ =np.zeros(1 + X.shape[1]);
        self.errors_=[];
        for _ in range(self.n_iter):
            errors = 0
            """
            X:[[1,2,3],[4,5,6]]
            y:[1,-1]
            zip(X,y) = [[1,2,3 1],[4,5,6 -1]]
            """
            for xi,target in zip(X,y):
                """
                update = n * (y-y')
                """
                update = self.eta * (target - self.predict(xi))

                """
                xi是一个向量
                update * xi 等价:
                {W(1) = X[1]*update, W(2) = X[2]*update, W(3) = X[3]*update}
                """
                self.w_[1:] += update * xi
                self.w_[0] += update;

                errors += int(update !=0.0)
                self.errors_.append(errors)
                pass
            pass
        pass

数据解析和可视化

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值