K-Means、DBSCAN、GMM聚类原理及使用

一.聚类概述及基本使用

目的:对于样本空间中的不同样本希望在经过聚类后得到分类的效果

例:一个坐标轴中有多个点,每个点都有对应的坐标,样本空间表示为[[x1,y1],[x2,y2],[x3,y3]]一个二维向量

过程:样本空间 -->f()函数中(可以指定分成几类) -->聚类结果

import matplotlib.pyplot as plt
from sklearn import datasets
#产生样本点 :5000样本点,内外圆环间的比例,噪声系数
x,y = datasets.make_circles(n_samples=5000,factor=0.5,noise=0.05)
#其中 x是生成的样本点,y是样本点的标注如array([0, 1, 1, ..., 0, 1, 0])

plt.figure(figsize=(5,5))
plt.scatter(x[:,0],x[:,1],marker='o',c=y)  #c=y:根据y来设置颜色

#K-means聚类
from sklearn.cluster import KMeans
y_pred = KMeans(n_clusters=2,random_state=2021).fit_predict(x)
plt.figure(figsize=(5,5))
plt.scatter(x[:,0],x[:,1],c=y_pred)
plt.title("K-means")

#DBSCAN聚类
from sklearn.cluster import DBSCAN
y_pred =DBSCAN(eps=0.1,min_samples=10).fit_predict(x) #eps半径,min_samples邻居10个点
plt.figure(figsize=(5,5))
plt.scatter(x[:,0],x[:,1],c=y_pred)
plt.title("DBSGAN")

二.算法理解及解释

1.K-Means算法(划分聚类)

聚类算法理论篇(K-means,DBSCAN原理)_visualizing k-means clustering-CSDN博客

可以参考这个博客

理解:简单来说这个算法先是根据我们输入的经验类别K来随便放置K个点,对这K个点分区然后计算3(K)个区中的3(K)个中心点,中心点的位置就是一个聚类区中所有向量的均值,而中心点作为新一轮的点位重新分区再计算新的中心点,直到点位不再发生改变,在数学公式上就对于所有点位分区的后各个区的点到中心点欧式距离之和的值最小。

优点:原理简单,实现容易,可解释性强,对于凸数据集聚类效果好

缺点:需要指定K类,这需要观察和经验,对非凸数据集效果差,容易受到噪声,边缘点,孤立点影响

2.DBSCAN算法(密度聚类)

Question:

1.如何判断高密度的对象点?

2.如何判断离群/噪声点?

3.如何发现簇,如何分类?

簇的定义:数据空间中被低密度区域(噪声)分隔开的稠密对象区域,发现并划分任意形状含有噪声的样本空间中的高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值