AttributeError:function'对象没有属性' linreg'

时间:2014-09-02 23:37:57

标签: python numpy

我是python和编程的新手,正在通过“机器学习:算法视角”开展工作。我被告知要将数据标准化,将其分成训练和测试数据,恢复β矢量,然后使用最小平方和误差。我一直在,

文件“/ Users / shaune / Dropbox / Shaune PhD / auto-mpg.py”,第34行,in     的β= linreg.linreg(赖宁,traintgt)

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

请帮忙!感谢。

1 个答案:

答案 0 :(得分:1)

此功能的定义

def linreg(trainin,traintgt):

会覆盖您使用

导入的名称linreg
import linreg

重命名该功能。评论说recover the beta vector,所以也许更好的名字是recover_beta。也就是说,将def语句更改为

def recover_beta(trainin,traintgt):

你可能想要在函数中添加return语句。目前它没有返回任何内容。