【发布时间】:2017-10-24 08:20:02
【问题描述】:
我正在用 python 学习机器学习。我从那本书中阅读了以下代码。
x, y = np.array(x), np.array(y)
x = (x - x.mean()) / x.std()
x0 = np.linspace(-2, 4, 100)
def get_model(deg):
return lambda input_x=x0: np.polyval(np.polyfit(x, y, deg), input_x)
def get_cost(deg, input_x, input_y):
return 0.5 * ((get_model(deg)(input_x) - input_y) ** 2).sum()
我不知道为什么在get_cost 函数中,作者使用get_model(deg) 乘以input_x 即为x。据我了解,get_model(deg) 函数已经返回基于x0 预测的y。
当我试图了解发生了什么时,我输入了get_model(4),然后它返回了<function __main__.get_model.<locals>.<lambda>>。令我惊讶的是,它没有返回基于x0 预测的y 而是一个函数?!我完全搞砸了。
当我尝试输入get_model(4)(x) 时,它只是返回基于x 预测的y,我不明白。请有人可以帮我弄清楚。
【问题讨论】:
-
那不是乘法。
get_model是一个返回另一个函数的函数。 -
@user2357112 说得通。
标签: python python-3.x numpy lambda