Sklearn推出您自己的估算器,检查估算器错误

有人可以告诉我为什么我不断收到这些错误

AdaBoostClassifier类(ClassifierMixin,BaseEstimator):

def __init__(self,base_estimator = None,n_estimators = 50,random_state = None):
    self.base_estimator = base_estimator
    self.n_estimators = n_estimators
    self.random_state = random_state

def fit(self,X,y):
    """
    ----------
    X : array-like,shape (n_samples,n_features)
        The training input samples.
    y : array-like,)
        The target values. An array of int.
    Returns
    -------
    self : object
        Returns self.
    """
    # 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

    self.models = []
    self.alphas = []
    n_samples,_ = X.shape
    w = np.ones(n_samples) / n_samples

    for m in range(self.n_estimators):
        clf = DecisionTreeclassifier(max_depth = 1)
        clf.fit(X,y,sample_weight = w)
        pred = clf.predict(X)

        error = w.dot(pred != y)
        alpha = 0.5*(np.log(1-error)-np.log(error))

        w = w*np.exp(-alpha*y*pred)
        w = w/w.sum() # normalise to sum to 1

        self.models.append(clf)
        self.alphas.append(alpha)

    # Return the classifier
    return self.models

def predict(self,X):
    """ A reference implementation of a prediction for a classifier.
    Parameters
    ----------
    X : array-like,n_features)
        The input samples.
    Returns
    -------
    y : ndarray,)
        The label for each sample is the label of the closest sample
        seen during fit.
    """
    # Check is fit had been called
    check_is_fitted(self,['X_','y_'])

    # Input validation
    X = check_array(X)

    n_samples,_ = X.shape
    self.ada = np.zeros(n_samples)
    for alpha,clf in zip(self.alphas,self.models):
        self.ada += alpha*clf.predict(X)
        self.ada = np.sign(self.ada)
    return self.ada

def score(self,y):
    self.pred = self.predict(X)
    self.accuracy = 100*sum(self.pred==y)/len(y)
    return self.accuracy

check_estimator(AdaBoostClassifier)

回溯(最近通话最近): 文件“ C:\ Users \ Desktop \ ada.py”,位于第98行 check_estimator(AdaBoostClassifier) 文件“ C:\ Users \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ sklearn \ utils \ estimator_checks.py”,第302行,在check_estimator中 检查(名称,估计量) 包装中的文件“ C:\ Users \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ sklearn \ utils \ testing.py”,第355行 返回fn(* args,** kwargs) 文件“ C:\ Users \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ sklearn \ utils \ estimator_checks.py”,行1646,位于check_estimators_fit_returns_self中 断言estimator.fit(X,y)是估计器 AssertionError

alexzip 回答:Sklearn推出您自己的估算器,检查估算器错误

我相信您的 fit 方法应该返回 self,而不是 self.models

本文链接:https://www.f2er.com/2321442.html

大家都在问