我是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
请帮忙!感谢。
答案 0 :(得分:1)
此功能的定义
def linreg(trainin,traintgt):
会覆盖您使用
导入的名称linreg
import linreg
重命名该功能。评论说recover the beta vector
,所以也许更好的名字是recover_beta
。也就是说,将def
语句更改为
def recover_beta(trainin,traintgt):
你可能想要在函数中添加return
语句。目前它没有返回任何内容。