底层算法应用:
1、预处理:
先进行数据预处理
x=np.array([8,7,6,2,7,6,7,6,3,1,4,8,5,2,7])
y=np.array([8,4,8,5,7,6,2,7,6,7,6,3,1,2,7])
获取样本的数量
n=len(x)
给x增加一列1做准备,目的为了给作为截距的权重有位置可嵌入
x=np.c_[np.ones([n,1]),x]
为了后续维度对应,y也要进行维度的变化
y=y.reshape(15,1)
2、随机创建的θ值:
theta = np.zeros([2, 1])
3、模型调整:
每次调整都是设定模型函数,计算代价cost mse均方误差,计算梯度下降过程,计算θ的导数,然后更新θ的值
调整过程:
alpha = 0.01(超参数,又叫学习率或步长)
m_iter = 1000 #迭代次数
cost = np.zeros([m_iter]) #定义一个数组,存储所有的代价数据
for i in range(m_iter):
y_hat = x.dot(theta)#求预测值
error = y_hat - y #误差值
cost_val = 1 / 2 * m *error.T.dot(error)#代价值(矩阵的转置乘以自身就是自身的平方)
cost[i] = cost_val#记录代价值(代价值就是代价函数的J值)