关于这个算法的介绍有很多方式
先上结果
大致流程
先根据给定的半径 r 确定中心点,也就是这类点在半径r内包含的点数量 n 大于我们的要求(n>=minPionts)
然后遍历所有的中心点,将互相可通达的中心点与其包括的点分为一组
全部分完组之后,没有被纳入任何一组的点就是离群点啦!
导入相关依赖
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
求点跟点之间距离(欧氏距离)
def cuircl(pointA,pointB):
distance = np.sqrt(np.sum(np.power(pointA - pointB,2)))
return distance
求临时簇,即确定所有的中心点,非中心点
def firstCluster(dataSets,r,include):
cluster = []
m = np.shape(dataSets)[0]
ungrouped = np.array([i for i in range (m)])
for i in range (m):
tempCluster = []
#第一位存储中心点簇
tempCluster.append(i)
for j in range (m):
if (cuircl(dataSets[i,:],dataSets[j,:]