from skmultilearn.dataset import load_dataset
from skmultilearn.adapt import MLkNN
from sklearn.model_selection import GridSearchCV
X_train, Y_train, feature_names, label_names = load_dataset('emotions', 'train')
X_test, Y_test, _, _ = load_dataset('emotions', 'test')
print('X_train is {}'.format(X_train.shape))
print('Y_train is {}'.format(Y_train.shape))
parameters = {'k':range(1,3), 's':[0.5, 0.7, 1.0]}
clf = GridSearchCV(MLkNN(), parameters, scoring='f1_macro')
clf.fit(X_train,Y_train)
print(clf.best_params_, clf.best_score_)
报错:
emotions:train - does not exists downloading
Downloaded emotions-train
emotions:test - does not exists downloading
Downloaded emotions-test
X_train is (391, 72)
Y_train is (391, 6)
Traceback (most recent call last):
File "f:\5_UbiChain\Script\scikitMultilearn.py", line 12, in <module>
clf.fit(X_train,Y_train)
File "H:\Anaconda\lib\site-packages\sklearn\model_selection\_search.py", line 874, in fit
self._run_search(evaluate_candidates)
File "H:\Anaconda\lib\site-packages\sklearn\model_selection\_search.py", line 1388, in _run_search
evaluate_candidates(ParameterGrid(self.param_grid))
File "H:\Anaconda\lib\site-packages\sklearn\model_selection\_search.py", line 851, in evaluate_candidates
_warn_or_raise_about_fit_failures(out, self.error_score)
File "H:\Anaconda\lib\site-packages\sklearn\model_selection\_validation.py", line 367, in _warn_or_raise_about_fit_failures
raise ValueError(all_fits_failed_message)
ValueError:
All the 30 fits failed.
It is very likely that your model is misconfigured.
You can try to debug the error by setting error_score='raise'.
Below are more details about the failures:
--------------------------------------------------------------------------------
30 fits failed with the following error:
Traceback (most recent call last):
File "H:\Anaconda\lib\site-packages\sklearn\model_selection\_validation.py", line 686, in _fit_and_score
estimator.fit(X_train, y_train, **fit_params)
File "H:\Anaconda\lib\site-packages\skmultilearn\adapt\mlknn.py", line 218, in fit
self._cond_prob_true, self._cond_prob_false = self._compute_cond(X, self._label_cache)
File "H:\Anaconda\lib\site-packages\skmultilearn\adapt\mlknn.py", line 165, in _compute_cond
self.knn_ = NearestNeighbors(self.k).fit(X)
TypeError: NearestNeighbors.__init__() takes 1 positional argument but 2 were given
解决:
File "H:\Anaconda\lib\site-packages\skmultilearn\adapt\mlknn.py", line 165, in _compute_cond
self.knn_ = NearestNeighbors(self.k).fit(X)
报错的这一行改成
self.knn_ = NearestNeighbors(n_neighbors=self.k).fit(X)
# 这个报错一般是sklearn > 1.0会出现,我sklearn的版本是1.2.1,网上有人说退回0.23版本就不会报错