码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【聚类】DBCAN聚类


    OPTICS是基于DBSCAN改进的一种密度聚类算法,对参数不敏感。当需要用到基于密度的聚类算法时,可以作为DBSCAN的一种替代的优化方案,以实现更优的效果。

    原理

    基于密度的聚类算法(1)——DBSCAN详解_dbscan聚类_root-cause的博客-CSDN博客

    重点关照

    DBSCAN的优缺点及应用场景:

     (1)DBSCAN的优点:
    1) 可以对任意形状的稠密数据集进行聚类,相对的,K-Means之类的聚类算法一般只适用于凸数据集。
    2) 可以在聚类的同时发现异常点,对数据集中的异常点不敏感,和BIRCH聚类一样。
    3) 聚类结果没有偏倚,相对的,K-Means之类的聚类算法初始值对聚类结果有很大影响。
    (2)DBSCAN的缺点:
    1)如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差,这时用DBSCAN聚类一般不适合。
    2) 如果样本集较大时,聚类收敛时间较长,此时可以对搜索最近邻时建立的KD树或者球树进行规模限制来改进。
    3) 调参稍复杂,对参数比较敏感。主要需要对距离阈值ϵ,邻域样本数阈值MinPts联合调参,不同的参数组合对最后的聚类效果有较大影响

    python实现

    原始数据

    1. from sklearn.cluster import DBSCAN
    2. #from sklearn import metrics
    3. from sklearn.datasets import make_blobs
    4. from sklearn.preprocessing import StandardScaler
    5. import numpy as np
    6. import matplotlib.pyplot as plt
    7. plt.rcParams['font.sans-serif']=['STKaiTi'] #用来正常显示中文标签
    8. plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
    9. # 产生数据
    10. centers = [[1, 1], [-1, -1], [1, -1]]
    11. #make_blobs函数是为聚类产生数据集,产生一个数据集和相应的标签
    12. X,ltrue=make_blobs(n_samples=750,centers=centers,cluster_std=0.4,random_state=0)
    13. X = StandardScaler().fit_transform(X)
    14. # 画出原始的数据点
    15. plt.figure(0, figsize=(8, 6))
    16. plt.scatter(X[:, 0], X[:, 1],c = ltrue)
    17. plt.show()

    DBSCAN聚类 

    1. # 调用DBSCAN
    2. model = DBSCAN(eps=0.3, min_samples=10)
    3. db=model.fit(X)
    4. labels = db.labels_
    5. #-1表示那些噪声点
    6. n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
    7. print(n_clusters_)
    8. print(set(labels))
    9. # 统计每一类的数量
    10. import pandas as pd
    11. counts = pd.value_counts(model.fit_predict(X),sort=True)
    12. print(counts)
    13. plt.figure(1, figsize=(8, 6))
    14. plt.scatter( X[:, 0], X[:, 1],c=db.labels_)
    15. plt.show()

     

    图中黑色的是异常点,在取参数的过程中发现对参数比较敏感,一不小心就不对了 

  • 相关阅读:
    【小沐学NLP】Python实现聊天机器人(OpenAI,模型概述笔记)
    Unity接入OneStore内购
    基于 arm64 Linux nanosleep 系统调用流程分析
    Eclipse配置Tomcat教程+创建第一个Java Web程序
    HTML+CSS大作业【传统文化艺术耍牙15页】学生个人网页设计作品
    用Three.js打造生成式NFT艺术藏品
    数据库系统工程师------时间周期
    第8章 - 异构系统的协同控制及最优控制 --> 异构系统
    JavaSE_day01【Java概述、环境搭建、标识符、变量、基本数据类型】
    spring data jpa在mysql分页中的实例(一次访问同时获取数据和总数)
  • 原文地址:https://blog.csdn.net/m0_67173953/article/details/132666792
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号