思想:使损失函数MSE最小,拟合出的函数越准确
案例:假设你是一家书店的老板,考虑开一家分店,根据该城市的人口预测利润
import pandas as pd
import numpy as np
df = pd.read_csv(‘data.txt’, header=None)
print(df)
取所有的人口转成数组
x = np.array(df.iloc[:, 0])
print(x)
取所有的利润转成数组
y = np.array(df.iloc[:, 1])
print(y)
样本量
N = len(x)
斜率
w = 4.7
截距
b = -0.7
迭代次数
iteration = 10000
学习率
learning_rate = 0.0002
两次随时函数值的误差值
coef = 0.001
预测函数
def predict():
return w * x + b
损失函数
def get_loss():
loss = 0
# 取预测值
y_predict = predict()
# print(y_predict)
# 通过损失函数求损失值 MSE
loss = (1 / N) * np.sum([val ** 2 for val in (y - y_predict)])
print(loss)
return loss
梯度下降算法:分别对w,b求导
def get_gradient():
# 取所有的预测值
y_predict = predict()
# 取当前的损失函数的值
loss = get_loss()
# 分别对w,b求偏导
# 对b求导
b1 = -(2 / N) * sum(y - y_predict)
# 对w求导
w1 = -(2 / N) * sum(x * (y - y_predict))
print(w1, b1)
# 改变w和b
w1 = w - learning_rate * w1
b1 = b - learning_rate * b1
return w1, b1, loss
cost1 = 0
循环10000次
for i in range(iteration):
# 使用梯度下降求最新的w,b
w, b, loss = get_gradient()
# 计算误差值
error = cost1 - loss
# 如果误差值小于阈值就结束
if cost1 != 0 and error < coef:
break;
cost1 = loss
print(f’w={w},b={b},loss={cost1}')
输入该城市的人口,预测利润
y = w * 11 + b
print(f’利润={y}')
该博客介绍了一个利用梯度下降算法和最小均方误差(MSE)损失函数来预测书店分店利润的案例。通过读取数据文件,将人口和利润转换为数组,然后初始化模型参数,进行迭代优化。最终得到的模型可以用于预测新城市人口下的利润情况。
216

被折叠的 条评论
为什么被折叠?



