You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

skmultilearn库MLkNN训练报错:TypeError参数传递异常

解决skmultilearn中MLkNN的TypeError问题

问题场景

尝试使用skmultilearn包的多标签kNN(MLkNN)进行实验,代码如下:

from sklearn.datasets import make_multilabel_classification
from sklearn.model_selection import train_test_split
X, y = make_multilabel_classification(n_samples=700,
                                  n_features = 80,
                                  n_classes=5, 
                                  n_labels=2,
                                  allow_unlabeled=False,
                                  random_state=1)                                  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
from skmultilearn.adapt import MLkNN
classifier = MLkNN(k=3)
classifier.fit(X_train, y_train)

运行后出现如下错误:

Traceback (most recent call last):
  File "/home/hiki/Documents/Uni/Practical_Work/test_scene.py", line 55, in <module>
    classifier.fit(X_train, y_train)
  File "/home/hiki/.local/lib/python3.10/site-packages/mllearn/alg_adapt/mlknn.py", line 14, in fit
    self.knn = NearestNeighbors(self.k)
TypeError: NearestNeighbors.__init__() takes 1 positional argument but 2 were given

错误原因

从报错路径能看到,代码实际调用的是mllearn包下的mlknn.py,而非预期的skmultilearn包。mllearn是一个已停止维护的老旧库,它的MLkNN实现中调用sklearn的NearestNeighbors时参数传递方式错误——sklearn的NearestNeighbors初始化需要指定n_neighbors关键字参数,而非直接传位置参数,这就导致了类型错误。

解决步骤

  1. 卸载冲突的mllearn库:
pip uninstall mllearn -y
  1. 确保skmultilearn是最新可用版本:
pip install --upgrade scikit-multilearn
  1. 重新运行代码前,可先验证导入的MLkNN模块是否正确:
from skmultilearn.adapt import MLkNN
print(MLkNN.__module__)

输出应为skmultilearn.adapt.mlknn,说明导入的是正确的库。

内容的提问来源于stack exchange,提问作者Gunners

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:15:49