Я изучаю курс машинного обучения Эндрю Нг. Я пытаюсь получить единую цену из моего кода (опубликовано ниже). Но вместо этого я получаю кучу значений стоимости при умножении матриц. Я также не понимаю, как theta0 (или b в y = mx + b) даже реализуется здесь. Я думаю, что проблема исходит из жирного кода. Я понимаю, что матрица (97,2) * (2,1) приведет к матрице (97,1) (и вот что происходит), но как мне уменьшить ее до единого числа стоимости?
import numpy as np
import os
import pandas as pd
data = np.genfromtxt("DataML.csv", delimiter=",", skip_header=1)
X = data[:, 0]
y = data[:, 1]
m = len(X)
X = np.stack([np.ones(m), X], axis=1)
theta = np.array([-1,2])
theta = theta.reshape(2,1)
def compcost(X,y, theta):
**J = sum((np.dot(X,theta)- y)**2)/(2*m)**
return J
J = compcost(X,y, theta)
print(J)
Это то, что я получаю:
32.22511444 48.79754974 31.01703244 35.64840524 65.73677041
35.53801804 89.82792541 35.15308564 67.67026197 95.80271806
102.45428494 29.66040014 103.63074369 62.39801278 136.27315141
Кажется, я нашел свое решение, но я не понимаю, почему.
data = np.genfromtxt("DataML.csv", delimiter=",", skip_header=1)
X = data[:, 0]
y = data[:, 1]
m = len(X)
X = np.stack([np.ones(m), X], axis=1)
def compcost(X,y, theta):
**J = sum((np.dot(X,theta)- y)**2)/(2*m)**
return J
J = compcost(X,y, theta=np.array([-1,2]))
print(J)
Инициализация массива внутри функции вызова кажется это чудесным образом сработало, но почему? (Просто чтобы уточнить: я использовал theta = np.array ([- 1,2])) в последней строке кода против использования его перед определением функции). Любой ключ к пониманию того, почему это происходит? Также мой вопрос о theta0 (или b в y = mx + b) все еще стоит. Спасибо большое