跟着AI学AI(1): 线性回归模型
创始人
2025-06-01 12:02:07
0

跟着AI学AI-1: 线性回归模型

    • 提问:请使用numpy实现一个线性回归模型代码
    • 提问:请使用unittest生成测试用例
    • 提问:请描述下线性回归模型的梯度下降
    • 提问:请描述下线性回归模型的数学推导
    • 提问:线性回归模型的损失函数是什么?
    • 提问:请给出线性回归模型的损失函数的偏导数:
    • 提问:请给出线性回归模型损失函数偏导数使用链式求导的推导过程

提问:请使用numpy实现一个线性回归模型代码

回答:

import numpy as npclass LinearRegression:def __init__(self, lr=0.01, n_iters=1000):# 初始化函数,设置学习率和迭代次数self.lr = lrself.n_iters = n_itersself.weights = Noneself.bias = Nonedef fit(self, X, y):# 训练函数,输入X和y,更新权重和偏置n_samples, n_features = X.shapeself.weights = np.zeros(n_features)self.bias = 0for _ in range(self.n_iters):y_predicted = np.dot(X, self.weights) + self.bias# 计算梯度dw = (1 / n_samples) * np.dot(X.T, (y_predicted - y))db = (1 / n_samples) * np.sum(y_predicted - y)# 更新权重和偏置self.weights -= self.lr * dwself.bias -= self.lr * dbself.weights -= self.lr * dwself.bias -= self.lr * dbdef predict(self, X):# 预测函数,输入X,输出预测值y_predicted = np.dot(X, self.weights) + self.biasreturn y_predicted

提问:请使用unittest生成测试用例

import unittestclass TestLinearRegression(unittest.TestCase):def test_fit(self):X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])y = np.array([6, 15, 24])lr = LinearRegression()lr.fit(X, y)self.assertEqual(lr.weights.tolist(), [3, 3, 3])self.assertEqual(lr.bias, 0)def test_predict(self):X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])y = np.array([6, 15, 24])lr = LinearRegression()lr.fit(X, y)y_pred = lr.predict(X)self.assertEqual(y_pred.tolist(), [6, 15, 24])if __name__ == '__main__':unittest.main()

提问:请描述下线性回归模型的梯度下降

回答:
梯度下降是一种优化算法,用于最小化损失函数。在线性回归模型中,我们使用梯度下降来找到最小化平方误差的最佳拟合直线。具体来说,我们计算损失函数对每个参数的偏导数,然后将其乘以学习率并从当前参数值中减去。这个过程重复进行,直到损失函数收敛或达到预定的迭代次数。这样,我们就可以找到最小化平方误差的最佳拟合直线。

提问:请描述下线性回归模型的数学推导

回答:
在线性回归中,我们的目标是找到一条直线,使得所有数据点到该直线的距离之和最小。这个距离可以用平方误差来表示。因此,我们的目标是最小化平方误差。假设我们的模型为y = wx + b,其中w是斜率,b是截距。我们可以使用梯度下降来找到最小化平方误差的最佳拟合直线。具体来说,我们计算损失函数对w和b的偏导数,然后将其乘以学习率并从当前w和b的值中减去。这个过程重复进行,直到损失函数收敛或达到预定的迭代次数。最终,我们就可以找到最小化平方误差的最佳拟合直线。

提问:线性回归模型的损失函数是什么?

回答:
平方误差损失函数

提问:请写出线性回归模型的损失函数

J(w,b) = 1/2m * sum((y_pred - y)^2)

提问:请给出线性回归模型的损失函数的偏导数:

回答:

∂J(w,b)/∂w = 1/m * sum((y_pred - y) * x)
∂J(w,b)/∂b = 1/m * sum(y_pred - y)

提问:请给出线性回归模型损失函数偏导数使用链式求导的推导过程

回答:
我们可以使用链式求导法来推导线性回归模型损失函数的偏导数计算过程。首先,我们计算损失函数对预测值y_pred的偏导数:

∂J/∂y_pred = 1/m * sum(y_pred - y)

然后,我们计算y_pred对w和b的偏导数:

∂y_pred/∂w = x
∂y_pred/∂b = 1

接下来,我们可以使用链式求导法来计算损失函数对w和b的偏导数:

∂J/∂w = ∂J/∂y_pred * ∂y_pred/∂w = 1/m * sum((y_pred - y) * x)
∂J/∂b = ∂J/∂y_pred * ∂y_pred/∂b = 1/m * sum(y_pred - y)

这样,我们就得到了线性回归模型损失函数的偏导数计算公式。我们可以使用这些公式来实现梯度下降算法,找到最小化平方误差的最佳拟合直线。

–end–

相关内容

热门资讯

韩国新总统最快4日上任,学者:... 韩国总统大选3日即将迎来正式投票。根据选前多项“封关”民调结果,共同民主党候选人李在明仍以明显优势领...
23亿镑仍被冻结!英政府声明:... 直播吧06月03日讯 英国财政大臣瑞秋-里维斯与外交大臣戴维-拉米发表联合声明,就阿布出售切尔西的2...
美国总统特朗普关税政策的法律对... 美国总统特朗普关税政策的法律对头们要求法院在特朗普政府上诉期间暂停实施关税。
芯朋微将于6月18日召开股东大... 金融界6月2日消息,芯朋微发布公告,将于2025年6月18日召开第1次临时股东大会,网络投票同日进行...
“开盒”游戏害了多少孩子?看这... 5月29日,在最高人民法院“六一”儿童节公众开放日活动上,由最高人民法院新闻局、民一庭、人民法院出版...
原创 一... 近期,伴随着中国积极推行国际调解机制的浪潮,历史冤家柬埔寨与泰国却在边境地区上演了一场短暂却引发广泛...
2025深圳最新购房政策汇总! 深圳最新的购房政策是如何的? 今日小编为大家整理 2025年深圳买房政策汇总 大家一起来看看 一、...
南昌南斯友好路两家“海湾石油”... 今天(2日)上午 多名消费者向《都市现场》反映 他们在南昌南斯友好路上的两家“海湾石油” 预付充值了...
曝拜仁与莱奥密谈!AC米兰索要... 足坛转会市场再起波澜!德甲巨无霸拜仁慕尼黑,这次将目光投向了亚平宁半岛,盯上了AC米兰的王牌边锋——...
曼联2500万甩卖“铁腰”,那... 提起苏格兰中场斯科特·麦克托米奈,如今的足坛可谓是无人不知,无人不晓。但就在2024年夏天,当曼联以...