Kmeans聚类算法肘部求最佳K值时采用kneeLocator函数报错

今天因为需要重新定制Kmeans聚类算法,碰到一个比较严重的问题,因为采用肘部法计算最佳K值,重写后的Kmeans算法需要调用Kneed模块计算拐点,程序报错:ModuleNotFoundError: No module named 'numpy.testing.decorators',仔细查看发现时因为numpy版本太高,Kneed需要调用的一个模块中找不到numpy.testing.decorators。网上查看的解决方案,很多让给numpy降级,我很多项目使用现在的版本的numpy制作的,就怕降级之后引发其他项目的问题,这个方法显然不可取。站内一个大佬提了另一个不降级方案:【不降级的解决方案】ModuleNotFoundError: No module named ‘numpy.testing.decorators‘_link_in_csdn的博客-CSDN博客,虽然最终使用发现并没有什么用,但启发我想了另一个办法。

根据报错的代码:

File "D:\anaconda3\lib\site-packages\scipy\stats\morestats.py", line 12, in <module>
    from numpy.testing.decorators import setastest
ModuleNotFoundError: No module named 'numpy.testing.decorators'

问题出在morestats文件中,定位到文件,发现源码from numpy.testing.decorators import setastest呈现灰色,找不到引用,如果最终需要使用setastest函数的话,我只需要找到现在setastes函数位置就行了(本质上还是在numpy中decorators的新位置),在网上查找之后,发现新位置在numpy.testing._private.decorators,那替换掉这段引用为from numpy.testing._private.decorators import setastest就很好地解决了这个问题,一切恢复正常,这里记录一下这个方案,算是对大佬给出方案的一个补充。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值