自适应性神经元(1)——类的实现

代码如下:


#encoding:utf-8
import numpy as np
class AdalineGD(object):
    """
    eta: float
    学习效率,处于0和1

    n_iter: int
    对训练数据进行学习改进次数

    W_:一维向量
    存储权重数值

    error_:
    存储每次迭代改进时,网络对数据进行错误判断的次数
    """
    def __init__(self,eta=0.01,n_iter=50):
        self.eta=eta
        self.n_iter=n_iter
    def fit(self,X,y):
        """
        X:二维数组[n_samples,n_features]
        n_samples 表示X中含有训练数据条目数
        n_features 含有4个数据的一维向量,用于表示一条训练条目

        y:一维向量
        用于存储每一训练条目对应的正确分类
        """
        self.w_=np.zeros(1+X.shape[1])#初始化权重为0
        self.cost_=[]#成本向量

        for i in range(self.n_iter):
            output=self.net_input(X)#将输入的X与权重做乘积和,即:output=w0+w1*x1+...+wn*xn
            errors=(y-output)#y为正确分类,output为计算出来的分类,errors即为yi-Φ(zi)
            self.w_[1:]+=self.eta*X.T.dot(errors)#此句为计算△Wj
            self.w_[0]+=self.eta*errors.sum()#此句为W:=W+△W
            cost=(errors**2).sum()/2.0#cost就是Jw,当Jw越来越小时,得到的效果就会越来越好。
            self.cost_.append(cost)
        return  self
    def net_input(self,X):
        return np.dot(X,self.w_[1:])+self.w_[0]
        #此句为Z=W0*X0+W1*X1+...+Wn*Xn(X0=1)
    def activation(self,X):#激活函数
        return self.net_input(X)
    def predict(self,X):
        return np.where(self.activation(X)>=0,1,-1)
        #根据激活函数所得到的结果,对当前的数据条目进行分类


你可能感兴趣的:(机器学习)