Как получить единую стоимость из функции стоимости в машинном обучении - PullRequest
0 голосов
/ 26 апреля 2020

Я изучаю курс машинного обучения Эндрю Нг. Я пытаюсь получить единую цену из моего кода (опубликовано ниже). Но вместо этого я получаю кучу значений стоимости при умножении матриц. Я также не понимаю, как 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) все еще стоит. Спасибо большое

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...