function submit( )
addpath( './lib' ) ;
conf.assignmentSlug = 'linear-regression' ;
conf.itemName = 'Linear Regression with Multiple Variables' ;
conf.partArrays = { ...
{ ...
'1' , ...
{ 'warmUpExercise.m' } , ...
'Warm-up Exercise' , ...
} , ...
{ ...
'2' , ...
{ 'computeCost.m' } , ...
'Computing Cost (for One Variable)' , ...
} , ...
{ ...
'3' , ...
{ 'gradientDescent.m' } , ...
'Gradient Descent (for One Variable)' , ...
} , ...
{ ...
'4' , ...
{ 'featureNormalize.m' } , ...
'Feature Normalization' , ...
} , ...
{ ...
'5' , ...
{ 'computeCostMulti.m' } , ...
'Computing Cost (for Multiple Variables)' , ...
} , ...
{ ...
'6' , ...
{ 'gradientDescentMulti.m' } , ...
'Gradient Descent (for Multiple Variables)' , ...
} , ...
{ ...
'7' , ...
{ 'normalEqn.m' } , ...
'Normal Equations' , ...
} , ...
} ;
conf.output = @output;
submitWithConfiguration( conf) ;
end
function out = output( partId)
% Random Test Cases
X1
= [ ones
( 20 , 1 ) ( exp ( 1 ) + exp ( 2 ) * ( 0.1 : 0.1 : 2 ) ) ']; Y1 = X1(:,2) + sin(X1(:,1)) + cos(X1(:,2));
X2 = [X1 X1(:,2).^0.5 X1(:,2).^0.25];
Y2 = Y1.^0.5 + Y1;
if partId == ' 1 '
out = sprintf(' % 0.5f ', warmUpExercise());
elseif partId == ' 2 '
out = sprintf(' % 0.5f ', computeCost(X1, Y1, [0.5 -0.5]' ) ) ;
elseif partId == '3'
out
= sprintf ( '%0.5f ' , gradientDescent
( X1
, Y1
, [ 0.5 - 0.5 ] ', 0.01, 10)); elseif partId == ' 4 '
out = sprintf(' % 0.5f ', featureNormalize(X2(:,2:4)));
elseif partId == ' 5 '
out = sprintf(' % 0.5f ', computeCostMulti(X2, Y2, [0.1 0.2 0.3 0.4]' ) ) ;
elseif partId == '6'
out
= sprintf ( '%0.5f ' , gradientDescentMulti
( X2
, Y2
, [ - 0.1 - 0.2 - 0.3 - 0.4 ] ', 0.01, 10)); elseif partId == ' 7 '
out = sprintf(' % 0.5f ', normalEqn(X2, Y2));
end
end
submit()
ZnVuY3Rpb24gc3VibWl0KCkKICBhZGRwYXRoKCcuL2xpYicpOwoKICBjb25mLmFzc2lnbm1lbnRTbHVnID0gJ2xpbmVhci1yZWdyZXNzaW9uJzsKICBjb25mLml0ZW1OYW1lID0gJ0xpbmVhciBSZWdyZXNzaW9uIHdpdGggTXVsdGlwbGUgVmFyaWFibGVzJzsKICBjb25mLnBhcnRBcnJheXMgPSB7IC4uLgogICAgeyAuLi4KICAgICAgJzEnLCAuLi4KICAgICAgeyAnd2FybVVwRXhlcmNpc2UubScgfSwgLi4uCiAgICAgICdXYXJtLXVwIEV4ZXJjaXNlJywgLi4uCiAgICB9LCAuLi4KICAgIHsgLi4uCiAgICAgICcyJywgLi4uCiAgICAgIHsgJ2NvbXB1dGVDb3N0Lm0nIH0sIC4uLgogICAgICAnQ29tcHV0aW5nIENvc3QgKGZvciBPbmUgVmFyaWFibGUpJywgLi4uCiAgICB9LCAuLi4KICAgIHsgLi4uCiAgICAgICczJywgLi4uCiAgICAgIHsgJ2dyYWRpZW50RGVzY2VudC5tJyB9LCAuLi4KICAgICAgJ0dyYWRpZW50IERlc2NlbnQgKGZvciBPbmUgVmFyaWFibGUpJywgLi4uCiAgICB9LCAuLi4KICAgIHsgLi4uCiAgICAgICc0JywgLi4uCiAgICAgIHsgJ2ZlYXR1cmVOb3JtYWxpemUubScgfSwgLi4uCiAgICAgICdGZWF0dXJlIE5vcm1hbGl6YXRpb24nLCAuLi4KICAgIH0sIC4uLgogICAgeyAuLi4KICAgICAgJzUnLCAuLi4KICAgICAgeyAnY29tcHV0ZUNvc3RNdWx0aS5tJyB9LCAuLi4KICAgICAgJ0NvbXB1dGluZyBDb3N0IChmb3IgTXVsdGlwbGUgVmFyaWFibGVzKScsIC4uLgogICAgfSwgLi4uCiAgICB7IC4uLgogICAgICAnNicsIC4uLgogICAgICB7ICdncmFkaWVudERlc2NlbnRNdWx0aS5tJyB9LCAuLi4KICAgICAgJ0dyYWRpZW50IERlc2NlbnQgKGZvciBNdWx0aXBsZSBWYXJpYWJsZXMpJywgLi4uCiAgICB9LCAuLi4KICAgIHsgLi4uCiAgICAgICc3JywgLi4uCiAgICAgIHsgJ25vcm1hbEVxbi5tJyB9LCAuLi4KICAgICAgJ05vcm1hbCBFcXVhdGlvbnMnLCAuLi4KICAgIH0sIC4uLgogIH07CiAgY29uZi5vdXRwdXQgPSBAb3V0cHV0OwoKICBzdWJtaXRXaXRoQ29uZmlndXJhdGlvbihjb25mKTsKZW5kCgpmdW5jdGlvbiBvdXQgPSBvdXRwdXQocGFydElkKQogICUgUmFuZG9tIFRlc3QgQ2FzZXMKICBYMSA9IFtvbmVzKDIwLDEpIChleHAoMSkgKyBleHAoMikgKiAoMC4xOjAuMToyKSknXTsKICBZMSA9IFgxKDosMikgKyBzaW4oWDEoOiwxKSkgKyBjb3MoWDEoOiwyKSk7CiAgWDIgPSBbWDEgWDEoOiwyKS5eMC41IFgxKDosMikuXjAuMjVdOwogIFkyID0gWTEuXjAuNSArIFkxOwogIGlmIHBhcnRJZCA9PSAnMScKICAgIG91dCA9IHNwcmludGYoJyUwLjVmICcsIHdhcm1VcEV4ZXJjaXNlKCkpOwogIGVsc2VpZiBwYXJ0SWQgPT0gJzInCiAgICBvdXQgPSBzcHJpbnRmKCclMC41ZiAnLCBjb21wdXRlQ29zdChYMSwgWTEsIFswLjUgLTAuNV0nKSk7CiAgZWxzZWlmIHBhcnRJZCA9PSAnMycKICAgIG91dCA9IHNwcmludGYoJyUwLjVmICcsIGdyYWRpZW50RGVzY2VudChYMSwgWTEsIFswLjUgLTAuNV0nLCAwLjAxLCAxMCkpOwogIGVsc2VpZiBwYXJ0SWQgPT0gJzQnCiAgICBvdXQgPSBzcHJpbnRmKCclMC41ZiAnLCBmZWF0dXJlTm9ybWFsaXplKFgyKDosMjo0KSkpOwogIGVsc2VpZiBwYXJ0SWQgPT0gJzUnCiAgICBvdXQgPSBzcHJpbnRmKCclMC41ZiAnLCBjb21wdXRlQ29zdE11bHRpKFgyLCBZMiwgWzAuMSAwLjIgMC4zIDAuNF0nKSk7CiAgZWxzZWlmIHBhcnRJZCA9PSAnNicKICAgIG91dCA9IHNwcmludGYoJyUwLjVmICcsIGdyYWRpZW50RGVzY2VudE11bHRpKFgyLCBZMiwgWy0wLjEgLTAuMiAtMC4zIC0wLjRdJywgMC4wMSwgMTApKTsKICBlbHNlaWYgcGFydElkID09ICc3JwogICAgb3V0ID0gc3ByaW50ZignJTAuNWYgJywgbm9ybWFsRXFuKFgyLCBZMikpOwogIGVuZCAKZW5kCgpzdWJtaXQoKQ==