没有名为“sklearn.utils.linear_assignment_”的模块

Fur*_*lan 13 python scikit-learn

我正在尝试从 github运行一个项目,每个对象计数器应用程序都使用排序算法。由于特定错误,我无法运行其中任何一个,并附上错误屏幕截图。谁能帮我解决这个问题? 在此处输入图片说明

小智 40

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
Run Code Online (Sandbox Code Playgroud)

然后您可以运行该文件而无需更改代码。

  • 注意这一点:/sf/answers/4059499391/ (2认同)

小智 13

正如yiakwy在github 评论中指出的那样,这scipy.optimize.linear_sum_assignment 并不是完美的替代品:

我担心线性求和分配不等于线性分配,后者稍后实现“最大值”匹配策略而不是“完全匹配”策略,即在跟踪问题中可能会丢失旧的地标并进入新的检测。我们不必做出完成作业,尽可能多地匹配即可。

我在尝试在基于 SORT 的 yolo 跟踪代码中使用它时发现了这一点,该替换破坏了它(我很幸运,否则的话,我会在没有意识到的情况下从实验中得到错误的结果......)

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

https://github.com/scikit-learn/scikit-learn/blob/0.22.X/sklearn/utils/线性_分配_.py

例如,如果您将此文件复制到utils导入目录中from utils.linear_assignment_ import linear_assignment


San*_*lus 10

pip 安装 scikit-learn==0.22.2