跟着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–

相关内容

热门资讯

家装预付资金安全困局如何破解,... 家装预付资金安全困局如何破解 专家提出:建立“先验收后付款”装修资金存管制度 预交数万元甚至数十万元...
工行安康解放路支行积极开展《反... 为深入贯彻落实《国家金融监督管理总局安康监管分局办公室关于开展<反有组织犯罪法>宣传活动的通知》要求...
重庆公布育儿补贴制度实施方案 原标题:每孩每年3600元 重庆公布育儿补贴制度实施方案 11月21日,记者了解到,市卫生健康委、市...
十五运会组委会在深总结本届赛事... 深圳新闻网2025年11月22日讯(深圳报业集团记者 林炜航)11月21日,十五运会组委会在深圳市民...
中国军视网:日本妄言击沉福建舰... 本文转自【中国军视网】; 日本首相高市早苗发表涉台错误言论,公然挑战一个中国原则,甚至还有日本无知政...
重磅!东莞长安50万㎡产城发布... 在当下竞争激烈的市场环境中,中小企业如何突破成本压力,找到一片既能扎根成长又能眺望未来的理想栖息地?...
毕马威:政策、资本等多维着力 ... 由毕马威联合长三角G60科创走廊创新研究中心主办的“长三角高端装备新质领袖榜单发布仪式”于11月21...
河曲县开展驻村帮扶工作政策业务... 来源:河曲县融媒体中心 近日,我县组织开展驻村帮扶工作政策业务集中培训,进一步提升驻村帮扶干部...
羽绒服涨价与猪肉降价有关?经济... 中央气象台发布统计信息,14日至17日,我国今年下半年首轮大范围寒潮天气即将自西向东影响我国,多地降...
周勇,任上落马 11月21日,中央纪委国家监委网站发布通报: 国家能源集团乌海能源党委书记、董事长周勇涉嫌严重违纪违...