python机器学习手写算法系列——DBSCAN聚类

人工智能68

本文,就像本系列的其他文章一样。旨在通过阅读原论文+手写代码的方式,自己先把算法搞明白,然后再教其他人。手写代码除了可以验证自己是否搞明白以外,我会对中间过程做图。这样,我可以通过图直观的验证算法是否正确。而这些图,又成为写文章时候的很好的素材。

什么是 DBSCAN

DBSCAN,全称是 Density-Based Scan。 故名思意,就是通过密度扫描。DBSCAN是一种聚类算法,和KMeans相比,他不需要指定cluster的数量。他的主要参数有两个,半径和邻居的数量。Scikit-Learn中,半径用ϵ \epsilon ϵ(epsilon)表示,邻居的数量用min-samples表示。我们这里也借用sklearn的表示方式。这样大家使用sklearn的时候不会搞混。

当然,除了sklearn,在weka,R,elki等库里,也有DBSCAN的实现。他在教科书里也经常被提及,并有很多成功的实际运用。许多基于密度的聚类算法,也都受了DBSCAN的启发。实践证明改算法是有效的,并在2014年获得了SIGKDD的test-of-time大奖。

和KMeans比较

为什么有了KMeans,还要有DBSCAN,肯定是KMeans有解决不了的问题。

比如,我们画两个月亮。

```python
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.patches import Circle
from sklearn.cluster import DBSCAN, KMeans
from sklearn.datasets import make_moons

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
人工智能

神经网络案例

目录 神经网络案例 * 数据加载 数据处理 模型构建 模型编译 模型训练 模型测试 模型保存 总结 神经网络案例 学习目标 能够利用tf.keras获取数据集 能够网络多层神经网络的构建 能够完成网络...
人工智能

科大讯飞 SDK 安装梳理

学习如何安装调用SDK 实现语音任务 首先需要去讯飞官网进行 SDK下载 去科大讯飞官网https://www.xfyun.cn/,注册一个账户,并下载SDK。 点击SDK下载,然后创建应用,填个表如...
人工智能

激光SLAM框架总结

一、激光SLAM简介 基于激光雷达的同时定位与地图构建技术(simultaneous localization and mapping, SLAM)以其准确测量障碍点的角度与距离、 无须预先布置场景、...
人工智能

文本(图书)分类比赛学习笔记

赛题任务: 文本分类是根据文本的特征(内容或属性),将给定文本划分到相应的类别中。文本分类已经成为自然语言处理领域非常经典和基础的应用。其中,图书已经成为人类文本语料的重要来源和组成部分。中国年均出版...