哪个sklearn mixin声明适合和变换方法?

时间:2018-11-30 17:20:52

标签: scikit-learn

我找不到哪个sklearn混合类声明了fittransform方法。

TransformerMixin仅声明fit_transform,而BaseEstimator未声明fit(我认为应该如此)。

我怀疑这可能是故意的,而不是疏忽大意,所以我很乐意解释原因。

1 个答案:

答案 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的工作方式。