【问题标题】:scikit-learn StackingClassifier: are only sklearn estimators supported?scikit-learn StackingClassifier:仅支持 sklearn 估计器吗?
【发布时间】:2020-08-30 16:33:47
【问题描述】:

我正在考虑使用 scikit-learn 的 sklearn.ensemble.StackingClassifier

我阅读了文档,但我真的不清楚 StackingClassifier 支持哪些估算器。

估算器不是与 StackingClassifier 兼容的 sklearn(catboost、keras、pytorch 等)的一部分吗?

如果其中一些是,估计器使用 StackingClassifier 的最低和充分要求是什么?

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    sklearn 使用自己的估算器 API,因此您需要使您的模型(无论是 catboost、keras...)与此 API 兼容。

    sklearn 提供了一种方法来实现您自己的 sklearn 兼容估算器或以兼容的方式包装现有模型。这样做的方法是扩展 sklearn 的 BaseEstimator 类并提供所需方法的实现(例如 fitpredict)。这是一个取自文档的简单示例。

    import numpy as np
    from sklearn.base import BaseEstimator, ClassifierMixin
    from sklearn.utils.validation import check_X_y, check_array, check_is_fitted
    from sklearn.utils.multiclass import unique_labels
    from sklearn.metrics import euclidean_distances
    class TemplateClassifier(BaseEstimator, ClassifierMixin):
    
        def __init__(self, demo_param='demo'):
            self.demo_param = demo_param
    
        def fit(self, X, y):
    
            # Check that X and y have correct shape
            X, y = check_X_y(X, y)
            # Store the classes seen during fit
            self.classes_ = unique_labels(y)
    
            self.X_ = X
            self.y_ = y
            # Return the classifier
            return self
    
        def predict(self, X):
    
            # Check is fit had been called
            check_is_fitted(self)
    
            # Input validation
            X = check_array(X)
    
            closest = np.argmin(euclidean_distances(X, self.X_), axis=1)
            return self.y_[closest]
    

    您可以找到更多信息here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-04
      • 2018-11-04
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 2020-09-25
      • 2019-01-15
      • 2020-03-07
      相关资源
      最近更新 更多