解决:TypeError :cannot unpack non-iterable NoneType object


线性回归中出现错误:

TypeError                                 Traceback (most recent call last)
 in 
     11 if __name__ == "__main__":
     12     draw(x_train,y_train)
---> 13     w,b = fit(x_train,y_train)
     14     print(w,b)
     15     fit_line(w,b)

TypeError: 报错的原因是函数返回值得数量不一致,查看函数返回值数量和调用函数时接收返回值的数量是不是一致,修改一致即可

 错误源码如下:

def fit(x_train,y_train):
    size = len(x_train)
    numerator = 0
    denominator = 0
    for i in range(size):
        numerator += (x_train[i] - np.mean(x_train))*(y_train[i] - np.mean(y_train))
        denominator += (x_train[i] - np.mean(x_train))**2
    w = numerator/denominator
    b = np.mean(y_train) -w*np.mean(x_train)
。。。 if __name__ == "__main__": draw(x_train,y_train) w,b = fit(x_train,y_train) print(w,b) fit_line(w,b) print(predict(15000,w,b))

 解决方法:报错意思是函数返回值得数量不一致

修改代码:

def fit(x_train,y_train):
    size = len(x_train)
    numerator = 0
    denominator = 0
    for i in range(size):
        numerator += (x_train[i] - np.mean(x_train))*(y_train[i] - np.mean(y_train))
        denominator += (x_train[i] - np.mean(x_train))**2
    w = numerator/denominator
    b = np.mean(y_train) -w*np.mean(x_train)

    ##添加return返回即可解决
    return w,b