Hdbscan,一个实用的python库

Hdbscan,一个实用的python库

大家好,我是木木。今天给大家分享一个超酷的Python库,HDBSCAN

这个库是基于高密度聚类算法的变种,特别适合处理大规模复杂数据集,广泛应用于数据挖掘和机器学习领域,能够有效地识别高密度区域并形成簇。

Hdbscan,一个实用的python库
图源网络

HDBSCAN的三大特点

  • 自动聚类数量
    • HDBSCAN不需要预先指定簇的数量,能自动根据数据的密度分布决定最优的簇数量。
  • 噪声点处理
    • 这个库能有效识别并处理噪声点,与其他聚类算法相比,在处理异常值方面表现出色。
  • 适应不同密度
    • 它能够识别并适应数据集中各个簇的不同密度,这使得它在多种应用场景中都非常有效。

最佳实践

项目地址:https://github.com/scikit-learn-contrib/hdbscan

安装方法

pip install hdbscan

功能一:基本聚类

利用HDBSCAN进行基本的聚类操作非常简单。下面是如何在Python中使用HDBSCAN来进行聚类的示例:

>>> import hdbscan
>>> from sklearn.datasets import make_blobs
>>> 
>>> # 生成模拟数据
>>> data, _ = make_blobs(n_samples=300, centers=3, cluster_std=0.60, random_state=42)
>>> 
>>> # 创建HDBSCAN对象
>>> clusterer = hdbscan.HDBSCAN(min_cluster_size=10)
>>> cluster_labels = clusterer.fit_predict(data)
>>> 
>>> # 打印聚类结果
>>> print(cluster_labels)
[0 0 1 2 0 2 1 2 1 1 1 2 1 1 0 1 0 2 1 1 1 1 2 0 1 0 0 2 2 1 1 1 0 1 0 1 0
 2 0 2 2 1 0 2 1 1 0 2 0 2 2 0 0 1 0 2 0 1 2 1 0 2 2 0 0 2 2 0 0 1 2 0 0 1
 1 0 0 2 1 2 1 1 0 1 2 0 0 1 2 1 0 1 0 1 1 0 0 1 0 0 2 1 2 1 1 1 1 1 2 0 2
 1 1 1 1 2 0 2 0 2 2 2 1 0 0 0 0 1 0 0 1 1 1 1 1 2 2 0 1 0 1 1 0 1 2 2 2 1
 2 1 1 0 2 0 1 2 2 0 0 1 1 0 0 0 1 0 2 1 1 1 1 1 2 1 2 2 2 1 2 2 0 1 0 2 2
 0 2 1 2 2 0 0 2 0 2 2 2 2 1 0 1 1 2 2 1 2 0 0 2 1 1 0 2 2 0 0 0 0 1 0 0 2
 0 0 1 2 0 0 2 1 1 0 1 0 2 2 0 2 0 0 0 2 2 1 0 2 2 2 0 2 0 2 0 2 2 0 2 1 0
 1 1 1 0 1 2 2 0 2 2 1 1 2 2 2 0 0 0 1 1 1 2 2 2 2 0 2 0 2 2 0 1 2 2 1 0 1
 2 1 0 0]

功能二:可视化聚类结果

HDBSCAN支持多种可视化方式来帮助理解聚类结果,如使用matplotlib绘制聚类结果:

import seaborn as sns
import hdbscan
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs

# 生成模拟数据
data, _ = make_blobs(n_samples=300, centers=3, cluster_std=0.60, random_state=42)

# 创建HDBSCAN对象
clusterer = hdbscan.HDBSCAN(min_cluster_size=10)
cluster_labels = clusterer.fit_predict(data)

# 绘制聚类结果
palette = sns.color_palette()
cluster_colors = [palette[x] if x >= 0 else (0.50.50.5for x in cluster_labels]
plt.scatter(data[:, 0], data[:, 1], c=cluster_colors)
plt.title('HDBSCAN Clustering')
plt.show()
Hdbscan,一个实用的python库
图源网络

高级功能:软聚类

软聚类是一种数据点可以属于多个聚类的算法。HDBSCAN通过计算每个点属于聚类的概率,支持软聚类的概念。示例如下:

import hdbscan
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import matplotlib as mpl

from scipy.spatial.distance import cdist

%matplotlib inline
sns.set_context('poster')
sns.set_style('white')
sns.set_color_codes()

plot_kwds={'alpha':0.25's':60'linewidths':0}
palette = sns.color_palette('deep'12)

data = np.load('clusterable_data.npy')
fig = plt.figure()
ax = fig.add_subplot(111)
plt.scatter(data.T[0], data.T[1], **plot_kwds)
ax.set_xticks([])
ax.set_yticks([])
Hdbscan,一个实用的python库
图源网络

上面代码展示了数据在初次加载隶属于不同类别的分布

clusterer = hdbscan.HDBSCAN(min_cluster_size=15).fit(data)
pal = sns.color_palette('deep'8)
colors = [sns.desaturate(pal[col], sat) for col, sat in zip(clusterer.labels_,
                                                            clusterer.probabilities_)]
plt.scatter(data.T[0], data.T[1], c=colors, **plot_kwds);

之后引入HDBSCAN对数据软聚类并可视化分布

Hdbscan,一个实用的python库
图源网络

小总结

HDBSCAN是一个功能强大的聚类库,适用于处理各种复杂的数据集。通过自动确定聚类数量和优秀的噪声处理能力,它提供了一种高效且灵活的方式来进行数据分析和模式识别。



—— End ——


【限时福利】专为粉丝打造的《Python入门到入魔保姆级教程》来啦!

   现在扫码或者添加 vx:257735 即可领取

Hdbscan,一个实用的python库



原文始发于微信公众号(木木夕咦):Hdbscan,一个实用的python库

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

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/286212.html

(0)
码上实战的头像码上实战

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!