Kmeans和DBSCAN

Kmeans

1.类别是人为给定的
如何确定最佳的类别数目,可以通过基于簇内误差平方和,使用肘方法确定簇的最佳数量,肘方法的基本理念就是找出聚类偏差骤增是的k值,通过画出不同k值对应的聚类偏差图。

DBSCAN

基于密度聚类。
密度:样本的紧密程度。使用半径和最小样本量进行评估,如果在指定的半径领域内,实际样本量超过给定的最小期望样本量。

K-means和DBSCAN对比:

优点:
DBSCAN不需要事先要形成的簇类的数量;
DBSCAN可以发现任意形状的簇类;
DBSCAN能够识别出噪声点;
DBSCAN对数据库中样本的顺序不敏感,但对簇类之间的边界样本有所摆动;
缺点:
DBSCAN不能很好反映高维数据;
如果样本集的密度不均匀、聚类间距差很大时,聚类质量较差。

评价指标

(1)sihouette_score 轮廓系数
适用于实际类别信息未知的情况,用来计算所有样本的平均轮廓系数。

silhouette_score 轮廓系数:结合了凝聚度和分离度
凝聚度表示某个对象到它所属簇中所有其他对象的平均距离;
分离度表示某个对象到不包含它的任意簇中所有对象的平均距离。
取值为[-1,1],值越大越好;
当值为负时,表明凝聚度小于分离度,样本被分配到错误的簇中;
当值接近0时,表明聚类结果有重叠的情况。

(2)inertias

K-Means模型对象的属性,作为没有真实分类结果标签下的非监督式评估指标。表示样本到最近聚类中心的距离总和。
值越小越好,越小表示样本在类间的分布越集中。

显而易见的,类的数量越大,inertias会趋向越小。

(3)兰德指数

兰德指数需要给定实际类别信息C,假设K是聚类结果,a表示在C和K中都是同类别的元素对数,
b表示在C和K中都是不同类别的元素对数,计算公式略。
取值范围为[0,1],值越大意味着聚类结果与真实情况越吻合。

(4)互信息 MI
指的是相同数据的两个标签之间的相似度,即在衡量两个数据分布的相似程度。同样需要实际类别信息

(5)同质化得分、完整性得分、v_meansure_score

import numpy as np
import matplotlib.pyplot as plt
from sklearn import metrics
from sklearn import datasets
%matplotlib inline

X1, y1 = datasets.make_moons(n_samples=1000,
                            noise=0.1,
                            random_state=16)
X2, y2 = datasets.make_blobs(n_samples=1000,
                            n_features=2,
                            centers=[[1.2,1.2]],
                            cluster_std=[[0.1]],
                            random_state=16)

X = np.concatenate((X1, X2))
plt.figure(figsize=(10,7))
plt.title('origin')
plt.plot(X[:,0], X[:,1], 'o', markersize=6)
plt.show()

from sklearn.cluster import KMeans, DBSCAN

# 使用KMeans
y_pred = KMeans(n_clusters=3, random_state=9).fit_predict(X)
plt.figure(figsize=(10,7))
plt.scatter(X[:,0], X[:,1], s=25, c=y_pred)
plt.title('k-means:k=3')
plt.show()
print(metrics.silhouette_score(X, y_pred))

# 使用DBSCAN
y_pred = DBSCAN(eps=0.15, min_samples=10).fit_predict(X) # eps表示半径,min_samples表示簇最小样本数
plt.figure(figsize=(10, 7))
plt.scatter(X[:,0], X[:,1], s=25, c=y_pred)
plt.title('DBSCAN')
plt.show()
print(metrics.silhouette_score(X, y_pred))
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值