import numpy as np
import random
from numpy import genfromtxt
# 载入训练数据
def getData(dataSet):
m, n = np.shape(dataSet)
trainData = np.ones((m, n))
trainData[:,:-1] = dataSet[:,:-1]
trainLabel = dataSet[:,-1]
return trainData, trainLabel
# 梯度下降
def batchGradientDescent(x, y, theta, alpha, m, maxIterations):
xTrains = x.transpose()
for i in range(0, maxIterations):
hypothesis = np.dot(x, theta)
loss = hypothesis - y
# print loss
gradient = np.dot(xTrains, loss) / m
theta = theta - alpha * gradient
return theta
# 预测
def predict(x, theta):
m, n = np.shape(x)
xTest = np.ones((m, n+1))
xTest[:, :-1] = x
yP = np.dot(xTest, theta)
return yP
dataPath = r"C:\Users\LYM3\Desktop\realated file\深度学习\梯度下降(Gradient Descent)\house.csv"
dataSet = genfromtxt(dataPath, delimiter=',')
trainData, trainLabel = getData(dataSet)
m, n = np.shape(trainData)
theta = np.ones(n)
alpha = 0.1
maxIteration = 5000
theta = batchGradientDescent(trainData, trainLabel, theta, alpha, m, maxIteration)
x = np.array([[3.1, 5.5], [3.3, 5.9], [3.5, 6.3], [3.7, 6.7], [3.9, 7.1]])
print (predict(x, theta))
梯度下降
最新推荐文章于 2022-03-26 19:46:50 发布