我刚刚结束了对python中的回归以及numpy和pandas的学习,当我尝试使用带有数据集的Gradient Descent代码给我正确的thetas时,又给了我正确的thetas,却没有给出thetas(我尝试了Normal等式,它奏效,但我想知道所有方式) 这是link无效的数据集。
import numpy as np
import pandas as pd
def reg1():
data=pd.read_csv('D:\\New folder (4)\\02.txt',header=None,names=['x','y'])
data=data.dropna()
data.insert(0,'x0',1)
cols=data.shape[1]
x=np.matrix(data.iloc[:,0:cols-1].values)
y=np.matrix(data.iloc[:,cols-1:].values)
theta=np.matrix([0,0])
def computecost(x,y,theta):
z= np.power((x*theta.T-y),2)
return (sum(z)/(2*len(x)))[0,0]
#this is the gradient descent fun
def gd(x,y,theta,alpha,iters):
temp=np.zeros(theta.shape)
par=int(theta.shape[1])
for i in range(iters):
error=((x*theta.T)-y)
for j in range(par):
term=np.multiply(error,x[:,j])
temp[0,j]=theta[0,j]-((alpha/len(x))*np.sum(term))
theta=temp
return(theta)
alpha=0.01
iters=1000
return gd(x,y,theta,alpha,iters)
theta=reg1()
print(theta)
我希望输出类似于[[-0.10726546 1.00065638]]
但它给了我[[nan nan]]
答案 0 :(得分:0)
对于有相同问题的人
alpha的值应该是0.0001而不是0.01
但这是在我的数据集中
在另一种方法中,您应该更改alpha的值,直到获得最佳的计算成本(错误成本)为止。