【发布时间】:2020-08-21 08:59:18
【问题描述】:
我正在尝试自己编写 AdaBoostClassifier,并希望使其与 scikit-learn 兼容。但是,我的估算器无法通过check_estimator()。我检查了我的代码,分类器在我的数据集上运行良好。
p.s.我不是计算机科学专业的学生,所以我基本上使用简单的代码。
import numpy as np
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.utils.estimator_checks import check_estimator
from sklearn.ensemble import AdaBoostClassifier
from sklearn.metrics import confusion_matrix,classification_report
from sklearn.utils.validation import check_X_y, check_array, check_is_fitted
from sklearn.base import BaseEstimator, ClassifierMixin
from sklearn.utils.multiclass import check_classification_targets
class AdaboostClassifier(BaseEstimator, ClassifierMixin):
当我运行check_estimator(AdaboostClassifier, generate_only = False)时,错误如下。
ZeroDivisionError Traceback (most recent call last)
<ipython-input-13-67c9b1a2bb34> in <module>
----> 1 check_estimator(AdaboostClassifier)
~\Anaconda3\lib\site-packages\sklearn\utils\estimator_checks.py in check_estimator(Estimator, generate_only)
425 for estimator, check in checks_generator:
426 try:
--> 427 check(estimator)
428 except SkipTest as exception:
429 # the only SkipTest thrown currently results from not
~\Anaconda3\lib\site-packages\sklearn\utils\_testing.py in wrapper(*args, **kwargs)
325 with warnings.catch_warnings():
326 warnings.simplefilter("ignore", self.category)
--> 327 return fn(*args, **kwargs)
328
329 return wrapper
~\Anaconda3\lib\site-packages\sklearn\utils\estimator_checks.py in check_estimators_empty_data_messages(name, estimator_orig)
1355 "to train. Perhaps use "
1356 "check_array in train.".format(name)):
-> 1357 e.fit(X_zero_samples, [])
1358
1359 X_zero_features = np.empty(0).reshape(3, 0)
<ipython-input-12-eb321088a172> in fit(***failed resolving arguments***)
26 self.mis_rate = []
27 self.index_tree = []
---> 28 data_weights = [1/len(x)]*len(x)
29
30 x, y = check_X_y(x, y)
ZeroDivisionError: division by zero
x应该被输入,所以当然,它的长度目前为零。
我不知道check_estimator() 有效。谁能告诉我?
欣赏它。
【问题讨论】:
标签: python machine-learning scikit-learn adaboost