我在试着理解scikit-learn条管道.

According to a Note in the scikit user guide流水线"拥有流水线中最后一个估计器所拥有的所有方法".

因此,我用一个名为myfun的方法编写了我自己的Estiator类,使用这个类的一个对象作为新的Pipeline实例的最后一步,并对其调用myfun:

class MyEstimator:
    def __init__(self):
        pass
    def fit(self, X, y):
        return self    
    def myfun(self):
        return None

from sklearn.pipeline import make_pipeline
pipe = make_pipeline(MyEstimator())
pipe.myfun()

这导致了以下错误消息:

    pipe.myfun()
    ^^^^^^^^^^
AttributeError: 'Pipeline' object has no attribute 'myfun'

显然,与用户指南的声明相反,管道并不具有管道中最后一个估计器所拥有的所有方法.

所以我想知道:管道的最后一个估计器有什么方法(更准确地说,是方法签名)?

推荐答案

它在API docs的"方法"部分中有一个列表的子集;该子集由最终估计者拥有的方法确定.(它总是有一些,例如从BaseEstimator继承的那些.)

在源代码中,您可以通过修饰器@available_if识别这些方法,例如

@available_if(_final_estimator_has("predict"))
def predict(...):

https://github.com/scikit-learn/scikit-learn/blob/d99b728b3a7952b2111cf5e0cb5d14f92c6f3a80/sklearn/pipeline.py#L483

Python相关问答推荐

Python -Polars库中的滚动索引?

如何在Python中使用时区夏令时获取任何给定本地时间的纪元值?

使用plotnine和Python构建地块

_repr_html_实现自定义__getattr_时未显示

输出中带有南的亚麻神经网络

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

如何在python xsModel库中定义一个可选[December]字段,以产生受约束的SON模式

如果条件不满足,我如何获得掩码的第一个索引并获得None?

为什么NumPy的向量化计算在将向量存储为类属性时较慢?'

如何在UserSerializer中添加显式字段?

使用特定值作为引用替换数据框行上的值

基于形状而非距离的两个numpy数组相似性

matplotlib + python foor loop

Python—压缩叶 map html作为邮箱附件并通过sendgrid发送

Odoo16:模板中使用的docs变量在哪里定义?

在二维NumPy数组中,如何 Select 内部数组的第一个和第二个元素?这可以通过索引来实现吗?

使用Python异步地持久跟踪用户输入

Beautifulsoup:遍历一个列表,从a到z,并解析数据,以便将其存储在pdf中.

如何在SQLAlchemy + Alembic中定义一个"Index()",在基表中的列上

分解polars DataFrame列而不重复其他列值