python Mean-shift算法

python Mean-shift算法

@TOC

需要导入的包

sklearn是python的机器学习库

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

生成一些数据供使用

随机生成数字,形成np格式

pylab.rcParams['figure.figsize'] = (15.0, 8.0)
# X 创建300个随机坐标,范围是[-6,6]
X=(np.random.rand(300,2)*12)-6
print(type(X))
# Y 创建300个随机坐标,范围是[0,1]
y=np.random.randint(0,2,size=(300,1))
#plt.scatter(X[:, 0], X[:, 1], s=50);

Mean-shift算法

MeanShift(bandwidth=3.0723913799161027, bin_seeding=True, cluster_all=True,
min_bin_freq=1, n_jobs=1, seeds=None)
Parameters:
bandwidth : RBF内核里面的边界宽度
seeds : 初始化内核的种子
bin_seeding : 是否将所有的样本点作为簇中心
min_bin_freq :只接受min_bin_freq的点作为种子,以加速算法
cluster_all : 是否将所有数据点都分配到簇中,false表示将独立点进行独立(-1)
n_jobs : 并行计算数
Attributes:
cluster_centers_ : 簇中心点坐标
labels_ : 每个点的标签

from sklearn.cluster import estimate_bandwidth
# 通过下列代码可自动检测bandwidth值
# 从data中随机选取100个样本,计算每一对样本的距离,然后选取这些距离的0.2分位数作为返回值,当n_samples很大时,这个函数的计算量是很大的。
bandwidth = estimate_bandwidth(X, quantile=0.2, n_samples=100)
print("bandwidth:",bandwidth)
from sklearn.cluster import MeanShift
# bin_seeding设置为True就不会把所有的点初始化为核心位置,从而加速算法
ms = MeanShift(bandwidth=bandwidth, bin_seeding=True)
ms.fit(X)
labels = ms.labels_
cluster_centers = ms.cluster_centers_
# 计算类别个数
labels_unique = np.unique(labels)
n_clusters = len(labels_unique)

print("number of estimated clusters : %d" % n_clusters)

展示聚类结果

import matplotlib.pyplot as plt


pylab.rcParams['figure.figsize'] = (15.0, 8.0)
plt.scatter(X[:, 0], X[:, 1], c=labels, s=50, cmap='viridis')

# 画出聚类中心
centers = cluster_centers
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.5);

plt.title("Mean Shift (clusters = %d , Bandwidth = %.1f)" % (n_clusters, bandwidth), fontsize=20);
plt.show()

下面是结果图:
在这里插入图片描述

全部评论

相关推荐

醉蟀:你不干有的是人干
点赞 评论 收藏
分享
叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务