我正在吴哥教授的Coursera机器学习课程的第二周。我们正在研究线性回归,现在我正在处理成本函数的编码。
当我在八度命令行中逐行执行每行时,我编写的代码正确地解决了该问题,但是当我从八度中的computeCost.m文件运行它时,它返回0。
到目前为止的代码。
function J = computeCost(X, y, theta)
%COMPUTECOST Compute cost for linear regression
% J = COMPUTECOST(X, y, theta) computes the cost of using theta as the
% parameter for linear regression to fit the data points in X and y
% Initialize some useful values
%m = length(y) % number of training examples
% You need to return the following variables correctly
% ====================== YOUR CODE HERE ======================
% Instructions: Compute the cost of a particular choice of theta
% You should set J to the cost.
m = size(X,1);
predictions= X*theta;
sqrErrors= (predictions-y).^2;
J= 1/(2*m) * sum(sqrErrors);
=========================================================================
end
我已经设定
X=[1 1; 1 2; 1 3] y=[1;2;3] and theta=[0,1]
当我在命令提示符处一一执行上述行时,当theta = [0; 0]时我得到J = 0和J = 2.333。但是当我从octave命令行从文件computeCost.m运行相同的代码时,我总是得到不管我为theta设定什么值,J = 0。.请帮助
最佳答案
调用computeCost时是否可能出错?您提到您正在从computeCost.m运行脚本。 (我认为最好的办法是更好地描述哪个代码pasrt在哪个文件中以及如何调用函数)
规则是:如果您的函数名称为“ computeCost”,则应在名为“ computeCost.m”的文件中实现该函数(直到结束函数为止)。 (我有一些例外情况)
您也有可能错误地调用了computeCost。考虑这个脚本
C = 0;
function C = addthem (A, B)
C = A+B;
endfunction
addthem (2, 3); # This WON'T update C
C = addthem (4, 5); # This will update C
您还可以在computeCost和dbstep中使用“键盘”设置断点。您看过调试功能吗?确实值得使用它们,因为这使调试非常容易:Debugging in Octave
关于machine-learning - 无法计算成本函数中1个变量的成本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26455774/