Может ли функция вернуть пустой параметр в python? - PullRequest
1 голос
/ 23 октября 2019

В рамках курса обучения в ML я изучаю линейную регрессию. Странно, я столкнулся со следующей проблемой, и я не уверен, как решить эту проблему.

даны два вектора x и y:

x = np.linspace(x_min, x_max,50)
y = np.random.randint(-5/2,5/2, size=50)
y = y + 3 + 2*x 

Мне нужно заполнить код следующими двумя методами:

def linear_hypothesis(theta_0, theta_1):
    ''' Combines given arguments in a linear equation and returns it as a function

    Args:
        theta_0: first coefficient
        theta_1: second coefficient

    Returns:
        lambda that models a linear function based on theta_0, theta_1 and x
    ''' 
def mse_cost_function(x, y):
    ''' Implements MSE cost function as a function J(theta_0, theta_1) on given tranings data 

    Args:
        x: vector of x values 
        y: vector of ground truth values y 

    Returns:
        lambda J(theta_0, theta_1) that models the cost function
    '''

Тогда должны быть указаны вышеприведенные функциипозвонил по следующему коду:

j = mse_cost_function(x, y)
print(j(2.1, 2.9))

И это то, что меня смущает. Я не уверен, какой тип возврата должна быть у каждой функции, и я не понимаю, что должна делать эта строка j(2.1, 2.9), поскольку j - это возвращаемое значение этого метода. кто-нибудь может просветить меня? Спасибо за любую помощь!

1 Ответ

1 голос
/ 23 октября 2019

mse_cost_function - это функция, которая возвращает функцию .

лямбда J (theta_0, theta_1), которая моделирует функцию стоимости

, поэтому j функция . как и любая функция (или, в общем случае, вызываемая), она может получать входные данные (в данном случае две).

Для более простого объяснения здесь есть функция add_x, которая принимает x и возвращает новую функцию, которая принимает z ивычисляет z + x

def add_x(x):
  return lambda z: z+x


g = add_x(3)
print(type(g))  # -> <class 'function'>
print(g(2))  # 5
...