1.方程模型
h = np.dot(X,theta)
2.代价函数
J = (1.0/(2*m)) * np.sum(np.square(h-y))
3.梯度下降
deltatheta = (1.0/m) * np.dot(X.T,h-y)
4.参数更新
theta -= alpha * deltatheta
注释
这里把数据集的特征定义为X,h为预测值,J为代价函数,y为真实值,alpha为学习率
代码
# 简单线性回归
import numpy as np
from matplotlib import pyplot
# 读取数据
data = np.loadtxt(r'triandata.txt',delimiter=',')
# 提取数据
X = data[:,:-1]
y = data[:,-1]
# 初始化数据
l = len(X)
X = np.c_[np.ones(l,1),X]
y = np.c_[y]
# 定义模型
def model(X,theta):
h = np.dot(X,theta)
return h
# 定义代价函数
def costFun(h,y)
J = (1.0/(2*m))*np.sum(np.square((h-y)))
return J
# 定义梯度下降
def gradeDesc(X,y,alpha=0.001,iter_num=