下面的代码表示尝试使用一个最小的、可复制的示例,该示例按照预期编译和运行
import numpy as np
from sklearn import model_selection as skms
N = 20
ftr = np.linspace(-10,10,num=N) # ftr values
tgt = 2*ftr**2 -3 + np.random.uniform(-2,2,N) # tgt =func(ftr)
(train_ftr, test_ftr, train_tgt, test_tgt) = skms.train_test_split(ftr, tgt,
test_size = N//2)
model_one = np.poly1d(np.polyfit(train_ftr, train_tgt, 1))
preds_one = model_one(test_ftr)
其中,以下为numpy ndarrays类型
train_ftr
test_ftr
train_tgt
test_tgt
我的问题与最后一行preds_one
的输出有关,而第二行model_one
。在最后一行中,当model_one
是复合函数时,如何将参数test_ftr
传递给在最后第二行中定义的函数model_one
?也就是说,test_ftr
实际上传递给了什么
np.poly1d
返回一个callable
对象。也就是说,它可以像函数一样调用(即它是函数)。Python中的对象如果具有__call__()
函数,则可以调用通过调用
model_one(test_ftr)
,实际上是在调用model_one.__call__(test_ftr)
,这是该对象拥有的一个方法Python中的每个函数都是带有
__call__
方法的对象相关问题 更多 >
编程相关推荐