tips:数据多的时候论文中可以先加一个描述统计
不用我们在开始时确定k值
与常用距离不同的是,这里有了类的概念,而不只是一个个的样本点
常用组间、组内,也会用重心法,实际上只要解释的通就行
直到最后只有一类,最后聚类
这里的绝对值只是距离的记号,不是求绝对值
各个类的畸变程度
各个类畸变程度相加->所有类总的畸变程度(我们要的就是这个)
k越大,聚合程度减小(最极端就是一个样本就是一个类,那么很多类的畸变程度都是0)
解释:
(1)根据聚合系数折线图可知,当类别数为5时,折线的下降趋势趋缓,故可将类别数设定为5.
(2)从图中可以看出, K值从1到5时,畸变程度变化最大。超过5以后,畸变程度变化显著降低。因此肘部就是 K=5,故可将类别数设定为5.(当然,K=3也可以解释)
确定K后画图
这里8个指标肯定画不了,只是演示一下2或3个指标怎么画
spss->图形-> 图表构造器
把图 指标拖进去
组合点( 勾选可以加一个点标签)
其他可以双击图进行修改,比如修改点颜色、背景颜色(填充改白色)、边框(黑色)、文本说明(右上角:类别编号)
DBSCAN算法:具有噪声的机遇密度的聚类方法
k均值算法与系统聚类算法是基于距离的
而DBSACAN是基于密度的聚类算法
三类数据点
所有的点都试探一遍
%
% Copyright (c) 2015, Yarpiz (www.yarpiz.com)
% All rights reserved. Please read the "license.txt" for license terms.
%
% Project Code: YPML110
% Project Title: Implementation of DBSCAN Clustering in MATLAB
% Publisher: Yarpiz (www.yarpiz.com)
%
% Developer: S. Mostapha Kalami Heris (Member of Yarpiz Team)
%
% Contact Info: sm.kalami@gmail.com, info@yarpiz.com
%
function [IDX, isnoise]=DBSCAN(X,epsilon,MinPts)
C=0;
n=size(X,1);
IDX=zeros(n,1); % 初始化全部为0,即全部为噪音点
D=pdist2(X,X);
visited=false(n,1);
isnoise=false(n,1);
for i=1:n
if ~visited(i)
visited(i)=true;
Neighbors=RegionQuery(i);
if numel(Neighbors)=MinPts
Neighbors=[Neighbors Neighbors2]; %#ok
end
end
if IDX(j)==0
IDX(j)=C;
end
k = k + 1;
if k > numel(Neighbors)
break;
end
end
end
function Neighbors=RegionQuery(i)
Neighbors=find(D(i,:)<=epsilon);
end
end
本笔记来自清风老师的数学建模,强烈推荐该课程!