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多进程multiprocessing用法实例分析
Aug 18 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
Apr 21 Python
解决Tensorflow使用pip安装后没有model目录的问题
Jun 13 Python
Django rest framework工具包简单用法示例
Jul 20 Python
Python实现压缩文件夹与解压缩zip文件的方法
Sep 01 Python
Python实现的合并两个有序数组算法示例
Mar 04 Python
OpenCV-Python 摄像头实时检测人脸代码实例
Apr 30 Python
使用python分析统计自己微信朋友的信息
Jul 19 Python
django解决订单并发问题【推荐】
Jul 31 Python
Python 如何在字符串中插入变量
Aug 01 Python
Python 多进程原理及实现
Dec 21 Python
Python OpenCV 彩色与灰度图像的转换实现
Jun 05 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电台频率大全 - 16 河南省
2020/03/11 无线电
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
PHP开发规范手册之PHP代码规范详解
2011/01/13 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
javascript下查找父节点的简单方法
2007/08/13 Javascript
javascript 页面划词搜索JS
2009/09/28 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
js代码实现随机颜色的小方块
2015/07/30 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
2015/08/22 Javascript
基于Angularjs实现分页功能
2016/05/30 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
微信小程序-小说阅读小程序实例(demo)
2017/01/12 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
javascript基本常用排序算法解析
2017/09/27 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
JS 数组基本用法入门示例解析
2020/01/16 Javascript
[02:27]《DAC最前线》之附加赛征程
2015/01/29 DOTA
django利用request id便于定位及给日志加上request_id
2018/08/26 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
2020/02/26 Python
python和JavaScript哪个容易上手
2020/06/23 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
城市观光通行证:The Sightseeing Pass
2018/04/28 全球购物
历史学专业毕业生求职信
2013/09/27 职场文书
省级优秀班集体申报材料
2014/05/25 职场文书
设计专业毕业生求职信
2014/06/25 职场文书
2015年采购员工作总结
2015/04/27 职场文书
2015年女职工工作总结
2015/05/15 职场文书
CSS基础详解
2021/10/16 HTML / CSS