Я пытался написать AdaBoostClassifier сам и хочу сделать его совместимым с scikit-learn. Однако моя оценка не может пройти check_estimator()
. Я проверил свой код, и классификатор очень хорошо работает с моими наборами данных. ps Я не изучаю информатику, поэтому в основном использую простой код.
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()
. Кто-нибудь может мне сказать?
Оцените это.