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实现单线程多任务非阻塞TCP服务端
Jun 13 Python
深入浅析Python中的yield关键字
Jan 24 Python
利用pandas读取中文数据集的方法
Jul 25 Python
解决python xlrd无法读取excel文件的问题
Dec 25 Python
python 多线程重启方法
Feb 18 Python
在python中画正态分布图像的实例
Jul 08 Python
基于sklearn实现Bagging算法(python)
Jul 11 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
Jul 14 Python
numpy.linalg.eig() 计算矩阵特征向量方式
Nov 29 Python
python标准库os库的函数介绍
Feb 12 Python
pandas to_excel 添加颜色操作
Jul 14 Python
Python标准库pathlib操作目录和文件
Nov 20 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
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
php 如何获取数组第一个值
2013/08/06 PHP
php文件操作之小型留言本实例
2015/06/20 PHP
解决Laravel 不能创建 migration 的问题
2019/10/09 PHP
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
javascript自启动函数的问题探讨
2013/10/05 Javascript
jQuery 获取和设置select下拉框的值实现代码
2013/11/08 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
JavaScript头像上传插件源码分享
2016/03/29 Javascript
JS操作JSON方法总结(推荐)
2016/06/14 Javascript
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
深入理解选择框脚本[推荐]
2016/12/13 Javascript
详解基于webpack搭建react运行环境
2017/06/01 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
ReactNative之FlatList的具体使用方法
2017/11/29 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
Vue使用鼠标在Canvas上绘制矩形
2020/12/24 Vue.js
python使用PyGame模块播放声音的方法
2015/05/20 Python
python实现线程池的方法
2015/06/30 Python
详解Python中contextlib上下文管理模块的用法
2016/06/28 Python
Django入门使用示例
2017/12/12 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
微信小程序python用户认证的实现
2019/07/29 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
CSS3中的5个有趣的新技术
2009/04/02 HTML / CSS
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
业务员的岗位职责
2014/03/15 职场文书
社区志愿者活动方案
2014/08/18 职场文书
2014年信访工作总结
2014/11/17 职场文书
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫