Python实现DBSCAN聚类算法并样例测试


Posted in Python onJune 22, 2021

什么是聚类算法?聚类是一种机器学习技术,它涉及到数据点的分组。给定一组数据点,我们可以使用聚类算法将每个数据点划分为一个特定的组。理论上,同一组中的数据点应该具有相似的属性和/或特征,而不同组中的数据点应该具有高度不同的属性和/或特征。聚类是一种无监督学习的方法,是许多领域中常用的统计数据分析技术。

常用的算法包括K-MEANS、高斯混合模型(Gaussian Mixed Model,GMM)、自组织映射神经网络(Self-Organizing Map,SOM)

重点给大家介绍Python实现DBSCAN聚类算法并通过简单样例测试。

发现高密度的核心样品并从中膨胀团簇。

Python代码如下:

# -*- coding: utf-8 -*-
"""
Demo of DBSCAN clustering algorithm
Finds core samples of high density and expands clusters from them.
"""
print(__doc__)
# 引入相关包
import numpy as np
from sklearn.cluster import DBSCAN
from sklearn import metrics
from sklearn.datasets.samples_generator import make_blobs
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
# 初始化样本数据
centers = [[1, 1], [-1, -1], [1, -1]]
X, labels_true = make_blobs(n_samples=750, centers=centers, cluster_std=0.4,
                            random_state=0)
X = StandardScaler().fit_transform(X)
# 计算DBSCAN
db = DBSCAN(eps=0.3, min_samples=10).fit(X)
core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
core_samples_mask[db.core_sample_indices_] = True
labels = db.labels_
# 聚类的结果
n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
n_noise_ = list(labels).count(-1)
print('Estimated number of clusters: %d' % n_clusters_)
print('Estimated number of noise points: %d' % n_noise_)
print("Homogeneity: %0.3f" % metrics.homogeneity_score(labels_true, labels))
print("Completeness: %0.3f" % metrics.completeness_score(labels_true, labels))
print("V-measure: %0.3f" % metrics.v_measure_score(labels_true, labels))
print("Adjusted Rand Index: %0.3f"
      % metrics.adjusted_rand_score(labels_true, labels))
print("Adjusted Mutual Information: %0.3f"
      % metrics.adjusted_mutual_info_score(labels_true, labels,
                                           average_method='arithmetic'))
print("Silhouette Coefficient: %0.3f"
      % metrics.silhouette_score(X, labels))
# 绘出结果
unique_labels = set(labels)
colors = [plt.cm.Spectral(each)
          for each in np.linspace(0, 1, len(unique_labels))]
for k, col in zip(unique_labels, colors):
    if k == -1:
        col = [0, 0, 0, 1]
    class_member_mask = (labels == k)
    xy = X[class_member_mask & core_samples_mask]
    plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(col),
             markeredgecolor='k', markersize=14)
    xy = X[class_member_mask & ~core_samples_mask]
    plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(col),
             markeredgecolor='k', markersize=6)
plt.title('Estimated number of clusters: %d' % n_clusters_)
plt.show()

测试结果如下:

最终结果绘图:

Python实现DBSCAN聚类算法并样例测试

具体数据:

Python实现DBSCAN聚类算法并样例测试

以上就是Python实现DBSCAN聚类算法(简单样例测试)的详细内容,更多关于Python聚类算法的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python BeautifulSoup使用方法详解
Nov 21 Python
python如何在循环引用中管理内存
Mar 20 Python
Redis使用watch完成秒杀抢购功能的代码
May 07 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
Oct 29 Python
python去除拼音声调字母,替换为字母的方法
Nov 28 Python
Python多线程threading模块用法实例分析
May 22 Python
Python中turtle库的使用实例
Sep 09 Python
Python实现word2Vec model过程解析
Dec 16 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
Mar 23 Python
python实现三壶谜题的示例详解
Nov 02 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
Nov 24 Python
OpenCV-Python使用cv2实现傅里叶变换
Jun 09 Python
python中sqllite插入numpy数组到数据库的实现方法
Jun 21 #Python
利用Python第三方库实现预测NBA比赛结果
Django实现drf搜索过滤和排序过滤
python生成可执行exe控制Microsip自动填写号码并拨打功能
详解Python自动化之文件自动化处理
Jun 21 #Python
Python Pandas pandas.read_sql_query函数实例用法分析
Jun 21 #Python
Python Pandas pandas.read_sql函数实例用法
Jun 21 #Python
You might like
关于页面优化和伪静态
2009/10/11 PHP
UCenter 批量添加用户的php代码
2012/07/17 PHP
JavaScript 拖拉缩放效果
2008/12/10 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
2013/11/15 Javascript
Array 重排序方法和操作方法的简单实例
2014/01/24 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
原生JS轮播图插件
2017/02/09 Javascript
解决js ajax同步请求造成浏览器假死的问题
2018/01/18 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
2018/04/25 Javascript
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
详解微信小程序-canvas绘制文字实现自动换行
2019/04/26 Javascript
vue 插槽简介及使用示例
2020/11/19 Vue.js
[01:01:52]完美世界DOTA2联赛PWL S2 GXR vs Magma 第二场 11.25
2020/11/26 DOTA
Python读写Redis数据库操作示例
2014/03/18 Python
跟老齐学Python之编写类之二方法
2014/10/11 Python
Python实现简单状态框架的方法
2015/03/19 Python
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
2019/06/19 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
python并发编程多进程 互斥锁原理解析
2019/08/20 Python
PyTorch 普通卷积和空洞卷积实例
2020/01/07 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
美国购买和销售礼品卡平台:Raise
2017/01/13 全球购物
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
领导工作表现评语
2015/01/04 职场文书
结婚司仪主持词
2015/06/29 职场文书
团拜会主持词
2015/07/04 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书
PHP策略模式写法
2021/04/01 PHP
详解Redis基本命令与使用场景
2021/06/01 Redis
python利用while求100内的整数和方式
2021/11/07 Python