总是显示错误:AttributeError: 'Perception' object has no attribute 'predict'

来源:3-1 实现感知器对象(上)

李爱菊

2018-11-05 00:49

总是找不到predict函数,是怎么回事?求大侠帮忙!

源代码:

https://img.mukewang.com/5bdf22ca00010e8305270474.jpg

https://img.mukewang.com/5bdf22e00001245206960497.jpg

https://img4.mukewang.com/5bdf22fc0001895607040383.jpg

https://img2.mukewang.com/5bdf231000017df907700481.jpg


写回答 关注

3回答

  • Du1in9
    2020-07-20 09:11:28

    http://img2.mukewang.com/5f14ef040001fb0a08530691.jpg

    http://img.mukewang.com/5f14ef17000134db08470610.jpg

    觉得有用点个赞哦~

  • Du1in9
    2020-07-20 09:09:20
    import numpy as npclass Perceptron(object):
        # 注释1
        def __init__(self, eta = 0.01, n_iter = 10):        self.eta = eta        self.n_iter = n_iter    def fit(self, X, y):        # 注释2
            self.w_ = np.zeros(1 + X.shape[1])        self.errors_ = []        for _ in range(self.n_iter):
                errors = 0
                # 注释3
                for xi, target in zip(X, y):
                    update = self.eta * (target - self.predict(xi))                # 注释4
                    self.w_[1:] += update * xi                self.w_[0] += update
                    errors += int(update != 0.0)                self.errors_.append(errors)    def net_input(self, X):        # 注释5
            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)


    注释1:
        eta:学习率
        n_iter:权重向量的训练次数
        w_:神经分叉权重向量
        errors_:用于记录神经元判断出错次数
    注释2:
        输入训练数据,培训神经元,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,加1是因为提到的w0,即步调函数的阈值
    注释3:
        比如:X:[[1, 2, 3], [4, 5, 6]
        所以y:[1, -1],zip(X, y):[[1, 2, 3, 1]. [4, 5, 6, -1]]
    
        update = n * (y - y')
    注释4:
        xi是一个向量
        update * xi等价于:[ w1 = x1*update, w2 = x2*update, ...]
    注释5:
        z = w0*1 + w1*x1 + w2*x2 + ... 
        np.dot()是做点积


  • qq_雙子_04312075
    2018-12-21 16:50:17

    把net_input  predict这两个函数从fit函数拿到外部  与fit函数平级  然后检查下自己的函数名有没有写错

    慕神2257...

    把net_input predict这两个函数从fit函数拿到外部 与fit函数平级后又报这个错误了:ufunc 'subtract' did not contain a loop with signature matching types (dtype('<U11'), dtype('<U11')) -> dtype('<U11')

    2019-09-03 19:18:25

    共 1 条回复 >

机器学习-实现简单神经网络

人工智能时代,你准备好成为抓住机遇的那百分之二吗。

66868 学习 · 182 问题

查看课程

相似问题