堆叠分类器:使用自定义分类器返回错误

问题描述

我在sklearn中使用了StackingClassifier,我希望组件模型成为自定义分类器。为了做到这一点,我想用一些伪代码对其进行测试,其中自定义分类器与已经存在的模型(在本例中为KNN)完全相同。但是,这会引发错误,并且我不确定我是否理解原因,并为此寻求帮助。这可能是相当明显的(我是尝试编写自定义分类器并使用ClassiferMixIn的新手),但是我似乎无法弄清我所缺少的内容:

代码-没有我的自定义类的基本示例(有效):

from sklearn.ensemble import StackingClassifier
from sklearn.pipeline import Pipeline
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_breast_cancer

X,y = load_breast_cancer(return_X_y=True,as_frame=True)

model = StackingClassifier(estimators=[
        ('tree',Pipeline([('tree',DecisionTreeClassifier(random_state=42))])),('knn',Pipeline([('knn',KNeighborsClassifier())])),])

model.fit(X,y)

代码-使用我的自定义类的代码(无效):

class MyOwnClassifier(ClassifierMixin):
    def __init__(self,classifier):
        self.classifier = classifier
    
    def fit(self,X,y):
        self.classifier.fit(X,y)
        return self 
    
    def predict(self,X):
        return self.classifier.predict(X)
    
    def predict_proba(self,X):
        return self.classifier.predict_proba(X)

model = StackingClassifier(estimators=[
        ('tree',MyOwnClassifier(KNeighborsClassifier()))])),y)

返回错误

AttributeError: 'MyOwnClassifier' object has no attribute 'classes_'

令我真正困惑的是,在this答案中,身份转换可以用作管道的一部分,而且我无法想象该对象具有' classes _ '要么。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)