我有两只熊猫的资料。一个df(或X)与word2vec嵌入,形状(500000,200)。还有另一个填充了0和1s的数据矩阵(或稀疏矩阵)。这个df是sklearn.preprocessing.MultiLabelBinarizer的输出,所以在每一列中只填充1s和0,并且这个df的形状是(50000,102)。
我尝试在这些数据上安装一个skmultilearn.adapt.mlknn,如下所示:
from skmultilearn.adapt import MLkNN
classifier = MLkNN(k=3)
# train
classifier.fit(X=x_train_w2v.to_numpy(), y=y_train.to_numpy())我得到的错误是:
TypeError Traceback (most recent call last)
<ipython-input-36-5ae90a2db4ec> in <module>
5 # # train
6
----> 7 clf_mlknn.fit(X=x_train_w2v.to_numpy(),y=y_train.to_numpy())
8 # predict
9 # predict_mlknn_wv = classifier_new.predict(x_test_mlknn)
~\Anaconda3\lib\site-packages\skmultilearn\adapt\mlknn.py in fit(self, X, y)
216 self._prior_prob_true, self._prior_prob_false = self._compute_prior(self._label_cache)
217 # Computing the posterior probabilities
--> 218 self._cond_prob_true, self._cond_prob_false = self._compute_cond(X, self._label_cache)
219 return self
220
~\Anaconda3\lib\site-packages\skmultilearn\adapt\mlknn.py in _compute_cond(self, X, y)
163 """
164
--> 165 self.knn_ = NearestNeighbors(self.k).fit(X)
166 c = sparse.lil_matrix((self._num_labels, self.k + 1), dtype='i8')
167 cn = sparse.lil_matrix((self._num_labels, self.k + 1), dtype='i8')
TypeError: __init__() takes 1 positional argument but 2 were given从源代码中,我可以看到NearestNeighbors只适用于X,在以--> 165开头的行中也可以看到上面的错误。我想这就是产生错误的原因。
如何修复此错误并适当地安装MLkNN?
发布于 2022-03-18 08:55:45
此错误与已由NearestNeighbors的scikit-learn指示的弃用警告有关:
FutureWarning:将n_neighbors=3作为关键字args传递。从1.0版(重命名0.25)开始,将这些参数作为位置参数传递将导致“将导致错误”,FutureWarning)
这一问题已在这里作了修改,将列入下一次发行版:
https://github.com/scikit-multilearn/scikit-multilearn/issues/230
同时,可以使用@ ()取1个位置参数,2个用拟合方法给出。的解决方案。
!pip uninstall scikit-learn -y
!pip install scikit-learn==0.24.1https://stackoverflow.com/questions/69734051
复制相似问题