问题描述
我在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 (将#修改为@)