我找不到哪个sklearn
混合类声明了fit
和transform
方法。
TransformerMixin仅声明fit_transform
,而BaseEstimator
未声明fit
(我认为应该如此)。
我怀疑这可能是故意的,而不是疏忽大意,所以我很乐意解释原因。
答案 0 :(得分:0)
基类就是 Python 基类。
就像在Python中一样,我们不需要声明所有不同的通用接口,但是有一些通用代码可供我们考虑:
TransformerMixin
声明了fit_transform
,但这是一个方便的函数链,用于拟合和变换(https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/base.py)。我们不需要在任何转换器中对其进行编码,它将始终调用fit
,然后调用transform
。
BaseEstimator
没有声明fit
,因为除了空方法外,没有其他内容。使用鸭式输入,实际上没有理由添加空方法。但是获取参数的功能已在整个包中使用,并且对于所有估算器都是通用的,因此将其排除在外是很有意义的。
我们可以对所有sklearn.base
进行相同的讨论,并且答案始终是:我们考虑了公共位,不需要在公共接口中的其他地方重写的位,然后使用他们。我们没有放置接口的定义,因为那不是Python的工作方式。