我在Gradient Descent中有问题,它给我的thetas没有

时间:2019-06-30 03:08:07

标签: python numpy machine-learning linear-regression gradient-descent

我刚刚结束了对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]]

1 个答案:

答案 0 :(得分:0)

对于有相同问题的人

alpha的值应该是0.0001而不是0.01

但这是在我的数据集中

在另一种方法中,您应该更改alpha的值,直到获得最佳的计算成本(错误成本)为止。