gpt4 book ai didi

python - MLKNN - __int__() 采用 1 个位置参数,但 2 个是使用 fit 方法给出的

转载 作者:行者123 更新时间:2023-12-05 03:36:00 30 4
gpt4 key购买 nike

我有两个 Pandas 数据框。一个带有 word2vec 嵌入的 df(或 X),形状为 (50000,200)。和另一个填充了 0 和 1 的数据框(或稀疏矩阵)。这个 df 是 sklearn.preprocessing.MultiLabelBinarizer 的输出, 因此在每一列中仅填充 1 和 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?

最佳答案

该错误与 scikit-learn 已经指出的弃用警告有关最近邻:

FutureWarning: Pass n_neighbors=3 as keyword args. From version 1.0 (renaming of 0.25) passing these as positional arguments will result in an error "will result in an error", FutureWarning)

此问题已在此处进行了调整,并将包含在下一个版本中:

https://github.com/scikit-multilearn/scikit-multilearn/issues/230

与此同时,可以使用@Naveen-Reddy-Marthala 的解决方案 MLKNN - __int__() takes 1 positional argument but 2 were given with fit method :

!pip uninstall scikit-learn -y
!pip install scikit-learn==0.24.1

关于python - MLKNN - __int__() 采用 1 个位置参数,但 2 个是使用 fit 方法给出的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69734051/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com