1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
import os import numpy as np import pandas as pd
path = os.getcwd() + '/ex1data1.txt'
data=pd.read_csv(path,header=None,names=['Population','Profit'])
data.insert(0, 'Ones', 1) cols = data.shape[1] X = data.iloc[:,0:cols-1] y = data.iloc[:,cols-1:cols]
X = np.matrix(X.values) y = np.matrix(y.values) theta = np.matrix(np.array([0,0])) alpha = 0.01 iters = 1000
def computeCost(X, y, theta): inner = np.power(((X * theta.T) - y), 2) cost=np.sum(inner) / (2 * len(X))
return cost
def gradientDescent(X, y, theta, alpha, iters): temp = np.matrix(np.zeros(theta.shape)) parameters = int(theta.ravel().shape[1]) cost = np.zeros(iters) for i in range(iters): error = (X * theta.T) - y for j in range(parameters): term = np.multiply(error, X[:,j]) temp[0,j] = theta[0,j] - ((alpha / len(X)) * np.sum(term))
theta = temp cost[i] = computeCost(X, y, theta) return theta, cost
g, cost = gradientDescent(X, y, theta, alpha, iters)
print("模型参数为:", g)
|