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实现定时同步本机与北京时间的方法
Mar 24 Python
从Python程序中访问Java类的简单示例
Apr 20 Python
在Python中操作字符串之replace()方法的使用
May 19 Python
Python实现基本线性数据结构
Aug 22 Python
python查看微信好友是否删除自己
Dec 19 Python
python基础教程项目五之虚拟茶话会
Apr 02 Python
Python3模拟登录操作实例分析
Mar 12 Python
python3使用matplotlib绘制散点图
Mar 19 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
Mar 25 Python
Python @property及getter setter原理详解
Mar 31 Python
python 密码学示例——凯撒密码的实现
Sep 21 Python
Matplotlib绘制条形图的方法你知道吗
Mar 21 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中设置多级目录session的问题
2011/08/08 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
2017/02/18 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
yii2 开发api接口时优雅的处理全局异常的方法
2019/05/14 PHP
优化JavaScript脚本的性能的几个注意事项
2006/12/22 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
基于javascript实现泡泡大冒险网页版小游戏
2016/03/23 Javascript
微信小程序 数据访问实例详解
2016/10/08 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
通过命令行创建vue项目的方法
2017/07/20 Javascript
Vue入门之animate过渡动画效果
2018/04/08 Javascript
详解vue 兼容IE报错解决方案
2018/12/29 Javascript
[00:37]2016完美“圣”典风云人物:AMS宣传片
2016/12/06 DOTA
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
python读取TXT每行,并存到LIST中的方法
2018/10/26 Python
在双python下设置python3为默认的方法
2018/10/31 Python
Python企业编码生成系统之主程序模块设计详解
2019/07/26 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
Scrapy中如何向Spider传入参数的方法实现
2020/09/28 Python
最新pycharm安装教程
2020/11/18 Python
Python实现PS滤镜中的USM锐化效果
2020/12/04 Python
python中把元组转换为namedtuple方法
2020/12/09 Python
阻止移动设备(手机、pad)浏览器双击放大网页的方法
2014/06/03 HTML / CSS
英国家电直销:Appliances Direct
2016/09/22 全球购物
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
Perfume’s Club英国官网:购买香水和护肤品
2019/11/02 全球购物
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
工程力学专业自荐信范文
2014/03/17 职场文书
机械设计制造及其自动化专业求职信
2014/06/17 职场文书
材料成型及控制工程专业求职信
2014/06/19 职场文书
关于清明节的演讲稿
2014/09/13 职场文书
解决sql server 数据库,sa用户被锁定的问题
2021/06/11 SQL Server
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python