机器学习入门-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.聚类算法算法简介 聚类算法算 ...
随机推荐
- prisma 服务器端订阅试用
graphql 协议是支持数据的实时订阅功能的(一般基于websocket 进行实现) prisma 支持客户端订阅以及服务器端订阅(类似webhook),可以方便将 数据推送后端服务 目的 pr ...
- smarty 学习 ——smarty 开发环境配置
smarty 对于开发的便利性不用多说了,直接进行开发环境的配置. 1.下载smarty 开发包 直接在官网进行下载即可 2.引用开发核心库 将libs文件中的东西拷贝到工程. smarty.clas ...
- My Router
新路由 型号:Y1 CPU:单核 链接终端:2 路由系统版本:1.6.6.171.6.9.17 运行时长:0天0小时17分13秒 MAC地址:20:76:93:28:CA:24 LAN口状态 MA ...
- Maven的dependency type属性
官方地址: http://maven.apache.org/ref/3.5.2/maven-model/maven.html (搜索:Some examples are jar, war, ejb-c ...
- EF Code First Migrations数据库迁移 (转帖)
1.EF Code First创建数据库 新建控制台应用程序Portal,通过程序包管理器控制台添加EntityFramework. 在程序包管理器控制台中执行以下语句,安装EntityFramewo ...
- 利用springMVC包装类上传多个文件
前端JSP页面代码片段: <!-- springMVC包装类上传文件 --><form name="uploadFiles" id="uploadFil ...
- android studio 更新 Gradle错误解决方法(Gradle sync failed)
android studio 更新 Gradle错误解决方法 Android Studio每次更新版本都会更新Gradle这个插件,但由于长城的问题每次更新都是失败,又是停止在Refreshing ...
- Zeroc Ice 3.6.1 生成 vs2015 c++ 版本库及相关配置
背景: 目前发布的Ice最新版本为3.6.0,使用的vs2013编译的,vs2015版本正在开发,发布只是时间问题: 不过官方实在给力,github上的源码已经支持vs2015编译了.源码版本为3.6 ...
- maven学习(3)-Maven 核心技术
第一节:Maven 仓库概念 Maven 远程仓库配置文件: $M2_HOME/lib/maven-model-builder-3.3.3.jar 文件:org\apache\maven\model\ ...
- 杂项:SQLite
ylbtech-杂项:SQLite SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是 ...