DBSCAN聚类算法

定义
1、可以把该密度聚类算法理解成:抱团玩耍。

2、DBSCAN 是一种基于密度的聚类算法,密度聚类算法一般假定类别可以通过样本分布的紧密程度决定。同一类别的样本,他们之间是紧密相连的。在该类别任意样本周围不远处一定有同类别的样本存在。通过将紧密相连的样本划为一类,得到一个聚类类别。通过将所有各组紧密相连的样本划为各个不同的类别,得到了最终的所有聚类类别结果。
3、DBSCAN 是基于一组邻域来描述样本集的紧密程度的,参数 (Eps, MinPts) 用来描述邻域的样本分布紧密程度。其中,Eps 描述了某一样本的邻域距离阈值,MinPts 描述了某一样本的距离为 Eps 的邻域中样本个数的阈值。
4、本算法主要用到的是:领域和核心对象。
DBSCAN 算法需要用户输入 2 个参数:一个参数是半径 (Eps),表示以给定点 P为中心的圆形邻域的范围;另一个参数是以点 P为中心的邻域内最少点的数量 (MinPts)。如果满足以点 P为中心、半径为 Eps 的邻域内的点的个数不少于 MinPts,则称点 P为核心点。

知识点

DBSCAN算法包括处理数据、密度聚类实现、画图三个步骤。其中所应用的数据集为Iris数据集,导入时只取特征值部分。密度聚类实现部分需要调用两个便利函数,分别为:计算两个向量间欧式距离函数及获取核心对象函数。

处理数据的工作原理是将数据集中可用于训练的样本提出来。本算法所需要的数据集需为连续型数据集,提取连续性数据集iris中的特征数据并根据算法进行分类预测。

密度聚类实现的工作原理是输入两个参数:邻域半径和最小样本数。通过随机选取某个样本,调用计算两个向量间欧式距离函数及获取核心对象函数,计算满足条件的蔟。

画图的工作原理是使用python常用可视化工具对所得分类蔟进行直观呈现。通过输入分类蔟的信息,将不同蔟以不同特征呈现在同一图像上,直观反映分类效果。

优缺点
优点: (1)可以对任意形状的稠密数据集进行聚类,KK KK-means 聚类算法一般只适用于凸数据集。

(2) 可以在聚类的同时发现异常点,对数据集中的异常点不敏感。

(3) 聚类结果没有偏倚。KK KK-means 聚类算法初始值对聚类结果有很大影响。

缺点:
1、当数据量增大时,要求较大的内存支持,I/O 消耗也很大。
2、当空间聚类的密度不均匀、聚类间距差相差很大时,聚类质量较差。
3、参数敏感。聚类结果与用户输入的邻域半径及密度域值密切相关,可能由于用户对数据特点不了解而输入不合适的参数,进而得出不准确的结论。

代码实现/center>
# -*- coding: utf-8 -*-
import numpy as np
import operator
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
import math
import time

def loaddata():
    df_data = pd.read_csv('C:/Users/hzt123/Desktop/Database/irisdata.csv')
    dataSet = np.array(df_data.values[:,:-1]) # 数据处理为numpy.array类型
    #print(dataSet)
    #train_x = dataSet[:,:-1]
    #train_y = dataSet[:,-1]
    #print(train_y)
    #print(dataSet)
    return dataSet   #,train_x,train_y


###密度聚类,需要输入的是参数Epsilon,半径 eps 和密度阈值 MinPts
#计算两个向量之间的欧式距离
def calDist(X1 , X2 ):
    sum = 0
    for x1 , x2 in zip(X1 , X2
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值