AttributeError:函数“object”没有属性“linreg”

2024-10-08 19:18:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python和编程新手,正在通过“机器学习:算法视角”来学习。我被告知要将数据归一化,将其分离为训练和测试数据,恢复beta向量,然后使用最小二乘误差之和。我一直得到

File“/Users/shaune/Dropbox/shaune博士/auto-英里/加仑/年“,第34行,英寸 贝塔=linreg.linreg(训练,训练)

AttributeError:“function”对象没有属性“linreg”

运行以下程序时:

import os
import pylab as pl
import numpy as np

from pylab import *
from numpy import *
import linreg

os.chdir('/Users/shaune/Dropbox/Shaune PhD')
auto=np.loadtxt('auto-mpg.data.txt',comments='"')

#normalise the data
auto=(auto-auto.mean(axis=0))/auto.var(axis=0)

#seperate the training and testing data
trainin=auto[::2,:8]
testin=auto[1::2,:8]
traintgt=auto[::2,1:2]
testtgt=auto[1::2,1:2]

#recover the beta vector
def linreg(trainin,traintgt):
    trainin=np.concatenate((trainin,-np.ones((np.shape(trainin)[0],1))),axis=1)
    beta=np.dot(np.dot(np.linalg.inv(np.dot(np.transpose(trainin),trainin)),np.transpose(trainin)),traintgt)
    traintgt=np.dot(trainin, beta)

#sum of squares error to get predicted values on test set (want small values)
beta=linreg.linreg(trainin,traintgt)
testin=concatenate((testin,-np.ones((np.shape(testin)[0],1))),axis=1)
testout=dot(testin,beta)
error=sum((testout-testtgt)**2)
print error

请帮忙!谢谢。在


Tags: theimportautodatanperrorusersdot
1条回答
网友
1楼 · 发布于 2024-10-08 19:18:56

这个函数的定义

def linreg(trainin,traintgt):

正在覆盖导入时使用的名称linreg

^{pr2}$

重命名函数。注释说recover the beta vector,所以也许更好的名称是recover_beta。也就是说,将def语句更改为

def recover_beta(trainin,traintgt):

您可能需要在函数中添加return语句。目前它不返回任何内容。在

相关问题 更多 >

    热门问题