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实现方法
Nov 18 Python
shell命令行,一键创建 python 模板文件脚本方法
Mar 20 Python
python实现寻找最长回文子序列的方法
Jun 02 Python
Numpy 改变数组维度的几种方法小结
Aug 02 Python
selenium+python自动化测试之多窗口切换
Jan 23 Python
python内存监控工具memory_profiler和guppy的用法详解
Jul 29 Python
Python适配器模式代码实现解析
Aug 02 Python
Python 实现大整数乘法算法的示例代码
Sep 17 Python
Python 写了个新型冠状病毒疫情传播模拟程序
Feb 14 Python
django实现HttpResponse返回json数据为中文
Mar 27 Python
keras 多任务多loss实例
Jun 22 Python
python 爬取小说并下载的示例
Dec 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中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
jquery select(列表)的操作(取值/赋值)
2011/03/16 Javascript
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
JS定时器实例
2013/04/17 Javascript
jQuery中extend函数的实现原理详解
2015/02/03 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
2015/12/16 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
2016/03/08 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
Vue如何实现组件的源码解析
2017/06/08 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
2017/09/25 Javascript
在Vue methods中调用filters里的过滤器实例
2018/08/30 Javascript
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
详解element-ui中el-select的默认选择项问题
2019/08/02 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
Python 时间处理datetime实例
2008/09/06 Python
Python 编码处理-str与Unicode的区别
2016/09/06 Python
Python守护进程和脚本单例运行详解
2017/01/06 Python
python K近邻算法的kd树实现
2018/09/06 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
2019/12/06 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
2020/01/25 Python
Pycharm中如何关掉python console
2020/10/27 Python
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
英国时尚家具、家居饰品及礼品商店:Graham & Green
2016/09/15 全球购物
外企C语言笔试题
2013/11/10 面试题
给学校建议书范文
2014/05/13 职场文书
品牌推广策划方案
2014/05/28 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
党员示范岗材料
2014/12/19 职场文书
给老婆的保证书
2015/01/16 职场文书
汽车4S店销售经理岗位职责
2015/04/02 职场文书
人生一定要学会的三样东西:放下、忘记、珍惜
2019/08/21 职场文书
SpringAop日志找不到方法的处理
2021/06/21 Java/Android