DBSCAN 聚类算法又称为密度聚类,是一种不断发张下线而不断扩张的算法,主要的参数是半径r和k值

DBSCAN的几个概念:

核心对象:某个点的密度达到算法设定的阈值则其为核心点,核心点的意思就是一个点在半径r的范围内,如果存在k个值,那么这个点就成为核心对象

直接密度可达:若点p在q的邻域内,且q是核心,则p-q称为直接密度可达

密度可达:若有q1, q2...qk,对任意qi与qi-1是直接密度可达,从q1和qk则是密度可达

边界点: 属于一个类的非核心点,不能再发展下线

噪声点: 不属于任意一类簇的点,从一个核心点出发是密度不可达

工作流程

参数D:数据数据集

参数R:指定半径

Minpts:密度阈值

停止条件:所有的点都遍历结束后停止,即所有的点都不是核心点

第一步:标记所有的对象为未遍历的点

第二步:随机选择一个初始点

第三步:如果R的领域内,有k个点的话,就创建一个新簇,将p添加到这个簇里C

第四步:遍历这个簇里的p个点,如果p为unvisited标记为visited,把这些对象添加到N,如果p不是任何簇的成员,把p添加到C

第五步:如果存在任意点不属于任何一个簇,即为噪声点

第六步:直到遍历完所有的点

这是一种不断遍历和发展下线的过程

优势:

不需要指定簇的个数

可以发现任意形状的簇

擅长找到离群点

两个参数就够了

劣势:

高维数据有些困难(可以做降维)

参数难以选择(参数对结果的影响很大)

sklearn效率很慢(数据削减策略),由于数据量很大,我们可以去除一部分相似的数据

代码:使用sklearn中的DBSCAN进行计算,使用scatter_matrix进行画图

第一步:数据导入

第二步:特征提取

第三步:模型训练和测试

第四步:使用轮廓系数进行评估

第五步:使用scatter_matrix画出两两变量的散点图

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt # 第一步导入数据
data = pd.read_csv('data.txt', sep=' ')
# 第二步提取特征
X = data[['calories', 'sodium', 'alcohol', 'cost']] # 设置颜色列表
colors = np.array(['red', 'blue', 'green', 'black'])
from sklearn.cluster import DBSCAN
from pandas.tools.plotting import scatter_matrix
from sklearn.metrics import silhouette_score # 3.模型训练和测试
labels = DBSCAN(eps=10, min_samples=2).fit(X).labels_
# 4. 输出轮廓系数得分
score = silhouette_score(X, labels)
# 5. 画scatter_matrix图
scatter_matrix(X, c=colors[labels], s=50, figsize=(10, 10))
plt.show()

机器学习入门-DBSCAN聚类算法的更多相关文章

  1. 机器学习之DBSCAN聚类算法

    可以看该博客:https://www.cnblogs.com/aijianiula/p/4339960.html 1.知识点 """ 基本概念: 1.核心对象:某个点的密 ...

  2. 机器学习六--K-means聚类算法

    机器学习六--K-means聚类算法 想想常见的分类算法有决策树.Logistic回归.SVM.贝叶斯等.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别 ...

  3. 机器学习入门:K-近邻算法

    机器学习入门:K-近邻算法 先来一个简单的例子,我们如何来区分动作类电影与爱情类电影呢?动作片中存在很多的打斗镜头,爱情片中可能更多的是亲吻镜头,所以我们姑且通过这两种镜头的数量来预测这部电影的主题. ...

  4. 【机器学习】机器学习入门08 - 聚类与聚类算法K-Means

    时间过得很快,这篇文章已经是机器学习入门系列的最后一篇了.短短八周的时间里,虽然对机器学习并没有太多应用和熟悉的机会,但对于机器学习一些基本概念已经差不多有了一个提纲挈领的了解,如分类和回归,损失函数 ...

  5. 5.机器学习——DBSCAN聚类算法

    1.优缺点 优点: (1)聚类速度快且能够有效处理噪声点和发现任意形状的空间聚类: (2)与K-MEANS比较起来,不需要输入要划分的聚类个数: (3)聚类簇的形状没有偏倚: (4)可以在需要时输入过 ...

  6. 【Python机器学习实战】聚类算法(2)——层次聚类(HAC)和DBSCAN

    层次聚类和DBSCAN 前面说到K-means聚类算法,K-Means聚类是一种分散性聚类算法,本节主要是基于数据结构的聚类算法--层次聚类和基于密度的聚类算法--DBSCAN两种算法. 1.层次聚类 ...

  7. 5.无监督学习-DBSCAN聚类算法及应用

    DBSCAN方法及应用 1.DBSCAN密度聚类简介 DBSCAN 算法是一种基于密度的聚类算法: 1.聚类的时候不需要预先指定簇的个数 2.最终的簇的个数不确定DBSCAN算法将数据点分为三类: 1 ...

  8. 机器学习入门KNN近邻算法(一)

    1 机器学习处理流程: 2 机器学习分类: 有监督学习 主要用于决策支持,它利用有标识的历史数据进行训练,以实现对新数据的表示的预测 1 分类 分类计数预测的数据对象是离散的.如短信是否为垃圾短信,用 ...

  9. 【Python机器学习实战】聚类算法(1)——K-Means聚类

    实战部分主要针对某一具体算法对其原理进行较为详细的介绍,然后进行简单地实现(可能对算法性能考虑欠缺),这一部分主要介绍一些常见的一些聚类算法. K-means聚类算法 0.聚类算法算法简介 聚类算法算 ...

随机推荐

  1. dockercompose up build fail (node no such file or directory packages.json )

    docker构建项目遇到如下问题: npm ERR! Darwin 15.0.0 npm ERR! argv "/usr/local/lib/node_modules/iojs-bin/no ...

  2. ehci及其伴随ohci主机控制器驱动分析

    1. 正常插入 插上U盘产生中断调用usb_hcd_irq: usb_hcd_irq ehci_irq usb_hcd_resume_root_hub queue_work(pm_wq, &h ...

  3. 【MVC】View的使用

    /Views/_ViewStart.cshtml 文件会在其他视图文档被加载之前被载入,代码如下: @{ Layout = "~/Views/Shared/_Layout.cshtml&qu ...

  4. 7 无线wifi传输视频开发

    转载,侵删 7 无线wifi传输视频开发 MT7601的驱动源码提供了两种:AP模式和STA模式源码.此时我使用USB作为AP热点,电脑作为STA模式,并使用ORTP实现无线传输视频 7.1.AP模式 ...

  5. 【转】RS232、RS485、TTL电平、CMOS电平

    原文网址:http://blog.sina.com.cn/s/blog_63a0638101018grc.html RS232.RS485.TTL电平.CMOS电平 什么是TTL电平.CMOS电平.R ...

  6. Oracle 实例恢复

    -======================= -- Oracle 实例恢复 --======================= 一.Oracle实例失败 Oracle实例失败多为实例非一致性关闭所 ...

  7. vue-progressbar 知识点

    使用步骤: 安装 import.Vue.use() 组件里,created() 和 mounted() 复制官方github地址上的代码 官方github地址:https://github.com/h ...

  8. C语言实现<读取>和<写入> *.ini文件(转)

    原地址:https://blog.csdn.net/niha1993825jian/article/details/41086403 #include <stdio.h> #include ...

  9. each与list的用法(PHP学习)

    1.each的用法 先看API array each ( array &$array ) api里是这么描述的:each — 返回数组中当前的键/值对并将数组指针向前移动一步 我们先来看看返回 ...

  10. 如何检测NFC芯片型号?NFC手机即可!

    拿到了NFC标签之后,因为很多项目中的需求,用户需要对自已的NFC芯片进行选型,也就需要判断NFC芯片的类型?芯片是原装进口还是国产兼容的?芯片内存有多少?芯片存储内部结构如何......,而且用户还 ...