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 错误和异常小结
Oct 09 Python
举例讲解Python中的迭代器、生成器与列表解析用法
Mar 20 Python
python读写json文件的简单实现
Apr 11 Python
Python实现的弹球小游戏示例
Aug 01 Python
python编写分类决策树的代码
Dec 21 Python
django小技巧之html模板中调用对象属性或对象的方法
Nov 30 Python
python3.6数独问题的解决
Jan 21 Python
使用python模拟命令行终端的示例
Aug 13 Python
Pytorch 实现冻结指定卷积层的参数
Jan 06 Python
pytorch动态网络以及权重共享实例
Jan 06 Python
在pytorch中对非叶节点的变量计算梯度实例
Jan 10 Python
Python使用plt.boxplot() 参数绘制箱线图
Jun 04 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预定义常量
2006/12/25 PHP
php 三大特点:封装,继承,多态
2017/02/19 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
jQuery实现表格颜色交替显示的方法
2015/03/09 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
2017/04/14 Javascript
vue.js 上传图片实例代码
2017/06/22 Javascript
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
vue轮播图插件vue-awesome-swiper
2017/11/27 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
2019/09/25 Javascript
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
10分钟学会js处理json的常用方法
2020/12/06 Javascript
python中快速进行多个字符替换的方法小结
2016/12/15 Python
Python面向对象特殊成员
2017/04/24 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
Python 实现try重新执行
2019/12/21 Python
Python获取、格式化当前时间日期的方法
2020/02/10 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
2020/03/23 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
LODI女鞋在线商店:阿利坎特的鞋类品牌
2019/02/15 全球购物
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
普通大学毕业生自荐信
2013/11/04 职场文书
大学校庆策划书
2014/01/31 职场文书
大学生先进事迹材料
2014/02/16 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
房贷工资证明范本
2015/06/12 职场文书