Scikit learn 学习推出自己的估计器,检查估计器误差
有人能告诉我为什么我总是犯这些错误吗 类ADABoostClassifierClassifierClassifierMixin,基估计量: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
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