meanshift


import numpy as np
from sklearn.cluster import MeanShift, estimate_bandwidth


def meanShift(features):
    '''
    '''
 
    features = np.array(features).astype(np.float64)

    '''本质上就是求平均最远k近邻距离, quantile的值表示进行近邻搜索时候的近邻占样本的比例'''
    bandwidth = estimate_bandwidth(features, quantile=0.2)
    ms = MeanShift(bandwidth=bandwidth, bin_seeding=True)
    ms.fit(features)
    labels = ms.labels_
    unique_labels = set(labels)

    # core_samples_mask = np.zeros_like(labels, dtype = bool)
    # core_samples_mask[ms.core_sample_indices_] = True

    clusters = []
    for k in unique_labels:
        ##-1表示噪声点,这里的k表示黑色
        ##生成一个True、False数组,lables == k 的设置成True
        class_member_mask = (labels == k)
        index = np.where(class_member_mask==True)[0]        
        ##两个数组做&运算,找出即是核心点又等于分类k的值  markeredgecolor='k',
        # index = np.where(class_member_mask & core_samples_mask==True)[0]

        clusters.append(index)

    ##### sort ############
    clusters = sorted(clusters, key = lambda x:len(x), reverse=True)
    
    return clusters

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值