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定时执行指定函数的方法
May 27 Python
python实现用户登录系统
May 21 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
Jun 21 Python
pandas对指定列进行填充的方法
Apr 11 Python
Python装饰器用法实例总结
May 26 Python
python读取excel指定列数据并写入到新的excel方法
Jul 10 Python
Django用户认证系统 组与权限解析
Aug 02 Python
利用ImageAI库只需几行python代码实现目标检测
Aug 09 Python
使用python实现对元素的长截图功能
Nov 14 Python
Django def clean()函数对表单中的数据进行验证操作
Jul 09 Python
python中翻译功能translate模块实现方法
Dec 17 Python
Python+OpenCV实现图片中的圆形检测
Apr 07 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
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
PHP面试题之文件目录操作
2015/10/15 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
php swoft框架实例用法
2020/12/22 PHP
获取页面高度,窗口高度,滚动条高度等参数值getPageSize,getPageScroll
2006/09/22 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
vue实现模态框的通用写法推荐
2018/02/26 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
2020/05/13 Javascript
vue 授权获取微信openId操作
2020/11/13 Javascript
微信小程序实现弹幕墙(祝福墙)
2020/11/18 Javascript
使用Python的Django框架结合jQuery实现AJAX购物车页面
2016/04/11 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
Python实现堡垒机模式下远程命令执行操作示例
2019/05/09 Python
python运用pygame库实现双人弹球小游戏
2019/11/25 Python
对python中各个response的使用说明
2020/03/28 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
利用css3画个同心圆示例代码
2017/07/03 HTML / CSS
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
屈臣氏菲律宾官网:Watsons菲律宾
2020/06/30 全球购物
文职个人求职信范文
2013/09/23 职场文书
教师绩效考核方案
2014/01/21 职场文书
学子宴答谢词
2014/01/25 职场文书
工程开工庆典邀请函
2014/02/01 职场文书
大学生活动总结模板
2014/07/02 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
工程安全生产协议书
2014/11/21 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书
毕业生自荐材料范文
2014/12/30 职场文书
2015年酒店工作总结
2015/04/28 职场文书