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的*args和**kwargs用法
Nov 01 Python
深入理解NumPy简明教程---数组1
Dec 17 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
Feb 13 Python
Python实现替换文件中指定内容的方法
Mar 19 Python
python中多层嵌套列表的拆分方法
Jul 02 Python
python数据批量写入ScrolledText的优化方法
Oct 11 Python
pygame实现雷电游戏雏形开发
Nov 20 Python
Python3 itchat实现微信定时发送群消息的实例代码
Jul 12 Python
Python通过文本和图片生成词云图
May 21 Python
解决python中0x80072ee2错误的方法
Jul 19 Python
pytorch 实现多个Dataloader同时训练
May 29 Python
Pandas 稀疏数据结构的实现
Jul 25 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
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
2017/06/09 PHP
yii2 url重写并隐藏index.php方法
2018/12/10 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
java script编程起步(第三课)
2007/01/10 Javascript
Javascript Tab 导航插件 (23个)
2009/06/11 Javascript
JavaScript判断是否为数字的4种方法及效率比较
2015/04/01 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
2016/04/05 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
怎么引入(调用)一个JS文件
2016/05/26 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
微信小程序 使用picker封装省市区三级联动实例代码
2016/10/28 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
详解使用webpack打包编写一个vue-toast插件
2017/11/08 Javascript
微信小程序实现折叠面板
2018/01/31 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
2019/09/25 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
Python3 合并二叉树的实现
2019/09/30 Python
解决pip安装的第三方包在PyCharm无法导入的问题
2020/10/15 Python
白宫黑市官网:White House Black Market
2016/11/17 全球购物
凯蒂·佩里个人女鞋品牌:Katy Perry Collections
2019/04/04 全球购物
C语言面试题
2013/05/19 面试题
韩语专业本科生求职信
2013/10/01 职场文书
学校食堂食品安全责任书
2014/07/28 职场文书
三年级学生期末评语
2014/12/26 职场文书
2015年招生工作总结
2015/05/04 职场文书
迎国庆主题班会
2015/08/17 职场文书
2016继续教育培训学习心得体会
2016/01/19 职场文书