python中的代价函数

python中的代价函数,python,machine-learning,Python,Machine Learning,这是一个成本函数,我想知道为什么我需要转置第一个h(θ,X)因为我无法评论,所以我试图根据我的假设给出答案。我不确定输入变量θ和X以及输出的数据结构 Numpy dot产品文档说明: 对于二维数组,它等价于矩阵乘法,对于一维数组,它等价于向量的内积(无复共轭)。对于N维,它是a的最后一个轴和b的倒数第二个轴的和积 矩阵乘法由R(lxm)xr(mxn)->R(lxn) 请注意,一个矩阵的列数必须等于另一个矩阵的行数 这意味着如果有两个行向量x,y,可能的结果是: 点(x.T,y)=>标量 点(x

这是一个成本函数,我想知道为什么我需要转置第一个h(θ,X)

因为我无法评论,所以我试图根据我的假设给出答案。我不确定输入变量θ和X以及输出的数据结构

Numpy dot产品文档说明:

对于二维数组,它等价于矩阵乘法,对于一维数组,它等价于向量的内积(无复共轭)。对于N维,它是a的最后一个轴和b的倒数第二个轴的和积

矩阵乘法由R(lxm)xr(mxn)->R(lxn)
请注意,一个矩阵的列数必须等于另一个矩阵的行数

这意味着如果有两个行向量x,y,可能的结果是:

  • 点(x.T,y)=>标量
  • 点(x,y.T)=>矩阵
选项点(x,y)不存在,因为在这种情况下没有定义矩阵积,因为x的行数不能等于y的列数。 对于行向量x和矩阵Y的情况,可以得到:

  • 点(Y,x)=>列向量
  • 点(x,Y)=>行向量

看起来他在用
np.dot
计算平方和。你自己定义
h()
,所以如果你想让参数是
X,θ
,那么你就直接修改它。只需记住同时更改对它的所有调用。
def h(theta,X):
    return np.dot(X,theta)

def computeCost(mytheta,X,y):
    return float((1/2*m) * np.dot((h(mytheta,X)-y).T,(h(mytheta,X)-y)))