使用Numpy的多变量梯度下降 - no中的错误。系数

时间:2018-04-05 13:56:40

标签: python pandas numpy machine-learning gradient-descent

在过去的几天里,我一直在尝试将Gradient Descent的这个应用程序编写为我在机械工程方面的最后一年项目。 https://drive.google.com/open?id=1tIGqZ2Lb0sN4GEpgYEZLFvtmhigXnot0上面附有HTML文件。只需下载该文件,如果您看到结果。 theta中只有3个值,而x有3个独立变量。所以它应该有4个值。

代码如下。结果,它是theta [-0.03312393 0.94409351 0.99853041]

import numpy as np
import random
import pandas as pd

def gradientDescent(x, y, theta, alpha, m, numIterations):
    xTrans = x.transpose()
    for i in range(0, numIterations):
        hypothesis = np.dot(x, theta)
        loss = hypothesis - y
        # avg cost per example (the 2 in 2*m doesn't really matter here.
        # But to be consistent with the gradient, I include it)
        cost = np.sum(loss ** 2) / (2 * m)
        print("Iteration %d | Cost: %f" % (i, cost))
        # avg gradient per example
        gradient = np.dot(xTrans, loss) / m
        # update
        theta = theta - alpha * gradient
    return theta

df = pd.read_csv(r'C:\Users\WELCOME\Desktop\FinalYearPaper\ConferencePaper\NewTrain.csv', 'rU', delimiter=",",header=None)


x = df.loc[:,'0':'2']
y = df[3]
print (x)

m, n = np.shape(x)
numIterations= 200
alpha = 0.000001
theta = np.ones(n)
theta = gradientDescent(x, y, theta, alpha, m, numIterations)
print(theta)

0 个答案:

没有答案