没有名为'sklearn.utils.linear_assignment_'的模块。

24

我正在尝试运行来自GitHub 项目的每个对象计数应用程序,使用排序算法。由于特定的错误,我无法运行它们中的任何一个,并附上了错误截图。有人能帮我修复这个问题吗? 输入图像描述


5
重新阅读 如何提问,因为看起来您第一次阅读时错过了一些关键要点,即“*不要发布代码、数据、错误信息等的图像 - 将文本复制或输入到问题中”(原文强调)。请参见:代码图片没有帮助的原因 - desertnaut
3
此外,这是一个有关于 scikit-learn 的问题,与 deep-learningyolo 或者 object-detection 没有任何关系 - 请勿添加无关的标签。 - desertnaut
当我深入学习深度学习和Yolo时,我遇到了这个问题。那么我该如何确切地知道呢? - Furkan Eraslan
2
由于您没有显示与这些模型/技术相关的任何内容 - 只是特定软件包的导入问题。 - desertnaut
5个回答

69

linear_assignment函数在0.21版本已经弃用,在0.23版本将被移除,但是sklearn.utils.linear_assignment_可以被替换为scipy.optimize.linear_sum_assignment

您可以使用以下代码:

from scipy.optimize import linear_sum_assignment as linear_assignment

你可以直接运行该文件,无需更改代码。


2
注意这个要点:https://dev59.com/XrXna4cB1Zd3GeqPMooM#57992848 - Sajjad Aemmi

19
pip install scikit-learn==0.22.2

1
pip install scikit-learn==0.22.2 --upgrade --> 对于之前安装了较新版本的人可能会有用。 - Koray
在使用scikit-learn 0.24版本的Deep Sort Python实现时遇到了这个问题,你解决了我的困扰。非常感谢你。 - spawnfile

13
yiakwyGitHub 评论 中指出,scipy.optimize.linear_sum_assignment 并不是 完美的替代品:

我担心 linear_sum_assignment 不等同于 linear_assignment,后者实现了“最大值”匹配策略而不是“完全匹配”策略,即在跟踪问题中,可能会丢失一个旧的标志性点并出现一个新的检测。我们不需要进行完整的分配,只需要尽可能地匹配。

在尝试将其放入基于 SORT 的 yolo 跟踪代码中时,我已经发现这一点,替换后代码出了问题(我很幸运,否则我将从实验中得到错误的结果而没有意识到……)

相反,我建议将模块本身复制到 sklearn 的最新版本中,并包含在你的代码中。

https://github.com/scikit-learn/scikit-learn/blob/0.22.X/sklearn/utils/linear_assignment_.py

例如,如果你将此文件复制到一个 utils 目录中,则可以使用 from utils.linear_assignment_ import linear_assignment 引入它。


2
  1. 使用 pip 安装 lap 和可选的 scipy
  2. 取消注释导入语句并使用以下函数:
def linear_assignment(cost_matrix):
  try:
    import lap
    _, x, y = lap.lapjv(cost_matrix, extend_cost=True)
    return np.array([[y[i], i] for i in x if i >= 0])
  except ImportError:
    from scipy.optimize import linear_sum_assignment
    x, y = linear_sum_assignment(cost_matrix)
    return np.array(list(zip(x, y)))

-4

我已经完成了。 pip install -U scikit-learn 要求已经是最新的:scikit-learn 要求已经满足,跳过升级:scipy 要求已经满足,跳过升级:joblib 要求已经满足,跳过升级:threadpoolctl 要求已经满足,跳过升级:numpy - Furkan Eraslan
@FurkanEraslan 在当前的scikit-learn版本中似乎没有这样的模块:https://scikit-learn.org/stable/modules/classes.html#module-sklearn.utils - desertnaut

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接