为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

源代码:

https://img1.sycdn.imooc.com//5bdf22ca00010e8305270474.jpg

https://img1.sycdn.imooc.com//5bdf22e00001245206960497.jpg

https://img1.sycdn.imooc.com//5bdf22fc0001895607040383.jpg

https://img1.sycdn.imooc.com//5bdf231000017df907700481.jpg


正在回答

3 回答

http://img1.sycdn.imooc.com//5f14ef040001fb0a08530691.jpg

http://img1.sycdn.imooc.com//5f14ef17000134db08470610.jpg

觉得有用点个赞哦~

1 回复 有任何疑惑可以回复我~
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()是做点积


1 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

慕神2257579

把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 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信