机器学习入门-DBSCAN聚类算法
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聚类算法的更多相关文章
- 机器学习之DBSCAN聚类算法
可以看该博客:https://www.cnblogs.com/aijianiula/p/4339960.html 1.知识点 """ 基本概念: 1.核心对象:某个点的密 ...
- 机器学习六--K-means聚类算法
机器学习六--K-means聚类算法 想想常见的分类算法有决策树.Logistic回归.SVM.贝叶斯等.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别 ...
- 机器学习入门:K-近邻算法
机器学习入门:K-近邻算法 先来一个简单的例子,我们如何来区分动作类电影与爱情类电影呢?动作片中存在很多的打斗镜头,爱情片中可能更多的是亲吻镜头,所以我们姑且通过这两种镜头的数量来预测这部电影的主题. ...
- 【机器学习】机器学习入门08 - 聚类与聚类算法K-Means
时间过得很快,这篇文章已经是机器学习入门系列的最后一篇了.短短八周的时间里,虽然对机器学习并没有太多应用和熟悉的机会,但对于机器学习一些基本概念已经差不多有了一个提纲挈领的了解,如分类和回归,损失函数 ...
- 5.机器学习——DBSCAN聚类算法
1.优缺点 优点: (1)聚类速度快且能够有效处理噪声点和发现任意形状的空间聚类: (2)与K-MEANS比较起来,不需要输入要划分的聚类个数: (3)聚类簇的形状没有偏倚: (4)可以在需要时输入过 ...
- 【Python机器学习实战】聚类算法(2)——层次聚类(HAC)和DBSCAN
层次聚类和DBSCAN 前面说到K-means聚类算法,K-Means聚类是一种分散性聚类算法,本节主要是基于数据结构的聚类算法--层次聚类和基于密度的聚类算法--DBSCAN两种算法. 1.层次聚类 ...
- 5.无监督学习-DBSCAN聚类算法及应用
DBSCAN方法及应用 1.DBSCAN密度聚类简介 DBSCAN 算法是一种基于密度的聚类算法: 1.聚类的时候不需要预先指定簇的个数 2.最终的簇的个数不确定DBSCAN算法将数据点分为三类: 1 ...
- 机器学习入门KNN近邻算法(一)
1 机器学习处理流程: 2 机器学习分类: 有监督学习 主要用于决策支持,它利用有标识的历史数据进行训练,以实现对新数据的表示的预测 1 分类 分类计数预测的数据对象是离散的.如短信是否为垃圾短信,用 ...
- 【Python机器学习实战】聚类算法(1)——K-Means聚类
实战部分主要针对某一具体算法对其原理进行较为详细的介绍,然后进行简单地实现(可能对算法性能考虑欠缺),这一部分主要介绍一些常见的一些聚类算法. K-means聚类算法 0.聚类算法算法简介 聚类算法算 ...
随机推荐
- MySQL Transaction--快照读和当前读
在MySQL读取数据时可以按照是否使用一致性非锁定读来分为快照读和当前读:1.快照读:MySQL使用MVCC (Multiversion Concurrency Control)机制来保证被读取到数据 ...
- day36 python学习gevent io 多路复用 socketserver *****
---恢复内容开始--- gevent 1.切换+保存状态 2.检测单线程下任务的IO,实现遇到IO自动切换 Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在geven ...
- day24 python学习 类 画元,命名空间作用域,组合,人狗大战升级
类命名空间与对象.实例的命名空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类有两种属性:静态属性和动态属性 静态属性就是直接在类中定义的变量 动态属性就 ...
- native app、web app、hybrid app、react-native 区别
Native App:指的是原生应用程序,一般依托于操作系统,有很强的交互. 技术:Objective-C Java Native App开发的优点 提供最佳的 户体验 拥有系统级别的通知或提醒 可以 ...
- Json之语法
JSON 文本格式在语法上与创建 JavaScript 对象的代码相同. 由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 Ja ...
- angularJS自定义服务的几种方式
在angularJS中定义服务共有四种常见的方式:factory,service,provider,constant,value 使用形式的不同: 1)factory以返回对象的形式定义服务: mya ...
- VS2005的depends工具 (分析EXE)
忙乎了近两个月,程序开始打包供外部调用了,连同其所需的dll文件,这就需要使用VC自带的Depends软件,在VS2005中其路径为:D:\Program Files\Microsoft Visual ...
- 【FusionCharts学习-1】获取资源
网址 官网: http://www.fusioncharts.com/charts/ 入门学习:http://www.fusioncharts.com/dev/usage-guide/getting ...
- R语言学习——条件筛选
- jquery二维码生成插件_二维码生成器
jquery二维码生成插件_二维码生成器 下载地址:jquery生成二维码.rar