Scikit learn 学习推出自己的估计器,检查估计器误差

Scikit learn 学习推出自己的估计器,检查估计器误差,scikit-learn,classification,adaboost,Scikit Learn,Classification,Adaboost,有人能告诉我为什么我总是犯这些错误吗 类ADABoostClassifierClassifierClassifierMixin,基估计量: def __init__(self, base_estimator = None, n_estimators = 50, random_state = None): self.base_estimator = base_estimator self.n_estimators = n_estimators self.random_sta

有人能告诉我为什么我总是犯这些错误吗

类ADABoostClassifierClassifierClassifierMixin,基估计量:

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, shape (n_samples,)
        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, shape (n_samples, n_features)
        The input samples.
    Returns
    -------
    y : ndarray, shape (n_samples,)
        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, X, y):
    self.pred = self.predict(X)
    self.accuracy = 100*sum(self.pred==y)/len(y)
    return self.accuracy
检查\u估计器AdaboostClassifier

回溯最近一次呼叫上次: 文件C:\Users\Desktop\ada.py,第98行,在 检查\u估计器AdaboostClassifier 文件C:\Users\AppData\Local\Programs\Python37-32\lib\site packages\sklearn\utils\estimator\u checks.py,第302行,在check\u estimator中 校验名 文件C:\Users\AppData\Local\Programs\Python37-32\lib\site packages\sklearn\utils\testing.py,第355行,在包装器中 返回fn*args,**kwargs 文件C:\Users\AppData\Local\Programs\Python37-32\lib\site packages\sklearn\utils\estimator\u checks.py,第1646行,在check\u estimators\u fit\u returns\u self assert estimator.fitX,y是估计量 AssertionError

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