La Fonction de coût, de Régression Linéaire, en essayant d'éviter le codage en dur des thêta. Octave.
Je suis dans la deuxième semaine de Professeur Andrew Ng lavable en cours d'Apprentissage par le biais de Coursera. Nous travaillons sur la régression linéaire et maintenant je m'occupe du codage de la fonction de coût.
Le code que j'ai écrit résout le problème correctement, mais ne passe pas le processus de soumission et d'échec de l'unité de test parce que j'ai codé en dur les valeurs de theta et ne permet pas, pour plus de deux valeurs de thêta.
Voici le code que j'ai obtenu jusqu'à présent
function J = computeCost(X, y, theta)
m = length(y);
J = 0;
for i = 1:m,
h = theta(1) + theta(2) * X(i)
a = h - y(i);
b = a^2;
J = J + b;
end;
J = J * (1 / (2 * m));
end
l'unité de test est
computeCost( [1 2 3; 1 3 4; 1 4 5; 1 5 6], [7;6;5;4], [0.1;0.2;0.3])
et devrait produire des ans = 7.0175
J'ai donc besoin d'ajouter une autre boucle for pour parcourir thêta, ce qui permet donc à n'importe quel nombre de valeurs de thêta, mais que je sois damné si je peux envelopper ma tête autour de comment/où.
Quelqu'un peut-il suggérer une façon de me permettre pour n'importe quel nombre de valeurs de thêta au sein de cette fonction?
Si vous avez besoin de plus d'informations pour comprendre ce que j'essaie de poser la question, je vais essayer de mon mieux pour fournir.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser vectoriser des opérations dans l'Octave/Matlab.
Itérer sur l'ensemble de vecteur - il est vraiment une mauvaise idée, si votre programme de langue laissez-vous vectoriser des opérations.
R, Octave, Matlab, Python (numpy) autoriser cette opération.
Par exemple, vous pouvez obtenir scalaire de production, si theta = (t0, t1, t2, t3) et X = (x0, x1, x2, x3) de la façon suivante:
theta * X' = (t0, t1, t2, t3) * (x0, x1, x2, x3)' = t0*x0 + t1*x1 + t2 x2 + t3*x3
Le résultat sera scalaire.
Par exemple, vous pouvez vectoriser h dans le code de la manière suivante:
La réponse ci-dessus est parfait, mais vous pouvez aussi le faire
Plutôt que de l'informatique
et puis en prenant la transposer, vous pouvez calculer directement
Il fonctionne parfaitement.
X*theta
?La ligne ci-dessous retourne pas le 32.07 valeur de coût, tandis que nous courons computeCost fois à l'aide de θ initialisé à zéros:
et est semblable à l'original des formules qui leur est donnée ci-dessous.
Il peut également se faire en ligne
m- # formation ensembles
La réponse ci-dessus est parfait,je pensais que le problème profondément pour une journée et encore peu familiers avec l'Octave,donc,il suffit d'étudier ensemble!
Si vous souhaitez utiliser uniquement de la matrice, de sorte que:
Je pense que nous avions besoin d'utiliser d'itération pour beaucoup de solution générale pour le coût de plutôt une itération, aussi le résultat s'affiche dans le fichier PDF 32.07 peut-être pas réponse correcte que le correcteur est à la recherche de la raison d'être de son un cas de beaucoup de données d'entraînement.
Je pense qu'il devrait en boucle comme ceci