先把公式列在这里方便表述:

我们设x0永远为1 ,用来表示 y = kx+b 中的 b 

因此,后面的式子就可以表述为:

data.insert(0, 'Ones', 1)
cols = data.shape[1]
# 取前cols-1列为输入向量
X = data.iloc[:,0:cols-1]
# 取最后一列为目标向量
y = data.iloc[:,cols-1:cols] 
X = np.array(X.values)
y = np.array(y.values)

因为python已经不推荐matrix了,所以我们就用array

注意我们在算梯度的时候:

theta - np.multiply((alpha / m) ,np.dot(np.dot(X,theta.T).reshape(1,-1) - y.T, X))

其中np.dot表示的是矩阵相乘,需要随时注意相乘以后的行和列,因为np.dot(X,theta.T)计算完后产生的是n行1列的数据,(假设相乘以后是全0)则表示为了:

[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0.]

而shape是(n,)

但用于下面的计算的矩阵必须得是(n,1),所以需要reshape一下。

 

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐