# -*- coding: utf-8 -*-
# @FileName: DBSCAN
# @Software: PyCharm
# @Author : li Xu
# @Time :2020//12//25 10:30
'''
西瓜书第九章聚类9.9
DBSCAN聚类算法
'''
import random
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
def CalDistance(X1, X2):
'''
计算两个向量之间的欧式距离
:param X1:样本1
:param X2:样本2
:return:距离
'''
dis = 0 # 初始化距离
for x1, x2 in zip(X1, X2):
dis += (x1 - x2) ** 2
return dis ** 0.5
def GetNeibor(data, dataset, eplsion):
'''
获取一个点的ε-邻域(记录的是索引)
:param data: 数据点
:param dataset: 当前数据点
:param eplsion: ε-邻域
:return: 索引列表
'''
res = []
for i in range(dataset.shape[0]):
if CalDistance(data, dataset[i]) < eplsion:
res.
西瓜书9.9DBSCAN聚类算法
最新推荐文章于 2022-06-22 22:39:48 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)