1 摘
聚类分析数挖掘重方法该文阐述基密度聚类分析基概念典算法思想提出种基核心点进行聚类算法该算法首先点进行分类分出核心点边界点噪音点然采方式簇进行合数进行分类合标记出结果图算法保证数处理完整性
2 密度聚类相关概念
构成簇象Eps邻域包含象数必须定值(MinPts)说邻域密度必须某阈值面出基密度聚类算法分析中定义
直接密度达:设 p核心点果qpEps邻域称p出发直接达q
密度相连:果样集合中存象o 象p q o 关Eps邻域MinPts 密度达象p q 关EpsMinPts 密度相连
簇:基密度达性密度相连点集合称簇
噪音点:簇中象
3 原理
考察样集中某点oo核心点通区域查询该点邻域邻域中点o属簇点作轮考察象(种子点)通断种子点进行区域查询扩展簇直找完整簇然程序寻找簇剩属类点噪音点
4 算法流程
算法描述:
算法: dbscan
输入: Eps—半径
MinPts—定点Eps邻域成核心象邻域点数
数集
输出: 聚成簇图形
1 Repeat
2 数集中抽取未处理点
3 If 该点核心点
Then找出该点密度达点构成簇
4 Else goto 2
5 簇外点标记成噪声
6 Until 点处理
5输入函数子函数
51输入函数:
MinPts5 阈值
Eps1 半径
[mn]size(data)数
x[(1m)' data]数存x中加标号1>m
[mn]size(x)载入数集
typezeros(m1)区分核心点1边界点0噪音点1
dealedzeros(m1)判断该点否处理0表示未处理1表示处理
discalDistance(x(2n1))距离矩阵计算
classzeros(1m)颜色分类
number1簇号
52子函数:
计算矩阵中点点间距离
function [ dis ] calDistance( x )
[mn] size(x) mn赋值
dis zeros(mm) 距离矩阵
for i 1m 计算点i点j间欧式距离
for j im
tmp 0
for k 1n n维循环
tmp tmp+(x(ik)x(jk))^2
end
dis(ij) sqrt(tmp)
dis(ji) dis(ij)
end
end
end
画出Epsminpots曲线
dataload('C\Users\sinx\Desktop\data\ringstxt')
[mn]size(data)数
x[(1m)' data]数存x中加标号1>m
DiscalDistance(x(2n1))距离矩阵计算
Dis_4sort(Dis2)
eDis_4(4)'
esort(e)降序排列
plot(e)
axis([0100005])
53确定EPSMinPts
求出点第5邻记dis_5dis_5降序排列找出Eps值相缓点作EpsMinpts取值5 图51
图51(数集ringstxt)
6算法分析
程序采密度聚类算法(DBSCAN)目滤低密度区域发现稠密度样点
优点:执行时需知道簇数目簇意维度样出良结果噪声定抗干扰力
缺点:点距离较接时候法执行出良结果数集密度变时候法出良结果
7结果图
算法运行结果图7172示:
图71(数集ringstxt)
图72(数集balltxt)
8 附录代码
for i1m
if dealed(i)0
xTempx(i)
Ddis(i)
indfind(D
class(i)0
噪音点
if length(ind)1
type(i)1
class(i)1
dealed(i)1
end
核心点
if length(ind)>MinPts+1
type(xTemp(11))1
class(ind)number
直接密度达密度达
while ~isempty(ind)邻域点空执行循环
yTempx(ind(1)) yTemp存第ind(1)点
dealed(ind(1))1
ind(1)[]
Ddis(yTemp(11))
ind_1find(D
class(ind_1)number
if length(ind_1)>MinPts+1
type(yTemp(11))1
for j1length(ind_1)
if dealed(ind_1(j))0
dealed(ind_1(j))1
ind[ind ind_1(j)]
class(ind_1(j))number
end
end
else 该点扩展
type(yTemp(11))0
end
end
end
numbernumber+1
end
end
end
ind_2find(class0)
class(ind_2)1
type(ind_2)1
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档