一种根据两两相关系数将多个对象进行分组,求解最优分组方案,并保证组内所有对象互相关的排列组合算法

项目场景:

接到一个电网项目,目标识别哪些电能表在一个表箱。
理论依据:同一表箱电能表电压变化规律相关,则计算所有表计之间的相关系数,将大于一定相关系数的电能表分为一组,且组内所有表计保证全部两两相关。


问题描述:

计算完所有表计之间相关系数之后,遇到一下几个问题:
1、同时存在相关关系的表计有很多,怎么进行分组,每组里面包含多少个对象怎么确定,有很多种可能,哪一种可能是最合理的。
2、从最大分组开始轮寻,采用逐个对象进行两两比对,计算量大,100多个表跑好几个小时,怎么解决性能问题。
3、通过排列组合方法寻找所有组合可能,100多个表直接分组会导致机器内存异常,需要先进行一定处理,勉强可以分组,耗性能。

逐一匹配代码:

def get_class(similarity_m,threshold):
    """
    similarity_array:相似度矩阵,带有行名和列名
    
    step1:获取输入数据的第0行数据
    step2:若第0行满足指定阈值的个数只有1个,则重新设置阈值,否则进行下一步
    step3:由step2的返回结果所形成的列名构成新的矩阵,判断该矩阵中是否所有数都满足阈值条件:
    若不满足:从中取出子矩阵,并降低阈值,重复上述步骤
    若满足:返回列名
    """
    similarity_row = similarity_m.iloc[0,:]
    names = np.array(list(similarity_row[similarity_row>=threshold].index))
    
    assert names.shape[0]>1,print("域值过大,请重新输入")
#     if names.shape[0]<=1:
#         print("域值过大,请重新输入")
#         return 0
    
    similarity_m_new = similarity_m.loc[name
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后知前觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值