微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Python中对数字进行分组/聚类

如何解决在Python中对数字进行分组/聚类

有许多方法可以进行聚类分析。一种简单的方法是查看连续数据元素之间的间隙大小:

def cluster(data, maxgap):
    '''Arrange data into groups where successive elements
       differ by no more than *maxgaP*

        >>> cluster([1, 6, 9, 100, 102, 105, 109, 134, 139], maxgap=10)
        [[1, 6, 9], [100, 102, 105, 109], [134, 139]]

        >>> cluster([1, 6, 9, 99, 100, 102, 105, 134, 139, 141], maxgap=10)
        [[1, 6, 9], [99, 100, 102, 105], [134, 139, 141]]

    '''
    data.sort()
    groups = [[data[0]]]
    for x in data[1:]:
        if abs(x - groups[-1][-1]) <= maxgap:
            groups[-1].append(x)
        else:
            groups.append([x])
    return groups

if __name__ == '__main__':
    import doctest
    print(doctest.testmod())

解决方法

我已经用谷歌搜索,已经测试过,这使我机智。我有一个需要按相似性分组的数字列表。例如,在[1,6,9,100,102,105,109,134,139]的列表中,将1
6
9放入列表中,将100、102、105和109放入列表中。列表,以及134和139。我在数学上很糟糕,我已经尝试过了,但是我无法使其正常工作。为了尽可能明确,我希望将彼此相距10个值以内的数字分组。有人可以帮忙吗?谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。