最大最小距离算法预习报告

该实验旨在让学生理解最大最小距离法的聚类原理,通过选取样本对象作为聚类中心,逐步确定其他中心,最终实现数据分类。算法基于欧氏距离,避免了K-means算法中初值选择的问题。实验步骤包括特征提取、聚类程序编写、聚类执行和结果评价。提供的Matlab代码展示了如何执行这一过程,但结果受初始中心选择和比例系数的影响,可能需优化选择策略。
摘要由CSDN通过智能技术生成

实验目的:本实验的目的是使学生了解最大最小距离法聚类方法,掌握最大最小距离聚类分析法的基本原理,培养学生实际动手和思考能力,为数据分析和处理打下牢固基础。

基本思想:最大最小距离法是模式识别中一种基于试探的类聚算法,它以欧式距离为基础,取尽可能远的对象作为聚类中心。因此可以避免K-means法初值选取时可能出现的聚类种子过于临近的情况,它不仅能智能确定初试聚类种子的个数,而且提高了划分初试数据集的效率。
    该算法以欧氏距离为基础,首先初始一个样本对象作为第1个聚类中心,再选择一个与第1个聚类中心最远的样本作为第2个聚类中心,然后确定其他的聚类中心,直到无新的聚类中心产生。最后将样本按最小距离原则归入最近的类。

实验步骤:

1、提取分类特征,确定特征值值域,确定特征空间;

2、编写聚类程序;

3、将所提取的样本的加以聚类;

4、用误差平方和准则(也可选用其他准则)加以评价,直到满意为止。

matlab代码实现:

clear all
close all
clc
%坐标点,初始化选定比例系数
num = 10;eta = 0.5;
axis([0 10 0 10]);
hold on
%c = zeros(10,1);z = zeros(10,2);
x1 = [0,0];x2 = [3,8];x3 = [2,2];x4 = [1,1];
x5 = [5,3];x6 = [4,8];x7 = [6,3];x8 = [5,4];
x9 = [6,4];x10 = [7,5];
W = [x1;x2;x3;x4;x5;x6;x7;x8;x9;x10];
%% step1 任选一个坐标点作为第一个聚类中心z1
R= randperm(num);
c(1) = R(1);
z(1,:) = W(c(1),:);
%% step2 从数据中选取一个距离z1最远的坐标点,作为第二个聚类中心z2
d = zeros(num,1);
for i = 1:num
    d(i) = norm(z(1,:)-W(i,:));
end
[~,c(2)] = max(d);%距离,位置
z(2,:)= W(c(2),:);
%% step3 计算剩余数据与z1,z2之间的距离,并求其最小距离
d =zeros(num,2);
for i = 1:num
    d(i,1) = norm(z(1,:)-W(i,:));
    d(i,2) = norm(z(2,:)-W(i,:));
end
D = zeros(num,1);
for i = 1:num
    D(i) = min(d(i,:));
end
%% step4 确定是否存在第三个聚类中心
[m,n] = max(D);%最大值,位置
if m>eta*norm(z(2,:)-z(1,:));
    c(3) = n;
    z(3,:) = W(c(3),:);
    jump = 1;%转至step5
else
    jump = 2;
end

switch (jump)
    case 1
        k = 4;
        %% step5 继续确定是否存在聚类中心
        for p = 1:num
            d =zeros(num,length(c));
            for i = 1:length(c)
                for j = 1:num
                    d(j,i) = norm(z(i,:)-W(j,:));
                end
            end
            for i = 1:num
                D(i) = min(d(i,:));
            end
            [m,n] = max(D);%最大值,位置
            if m>eta*norm(z(2,:)-z(1,:));
                c(k) = n;
                z(k,:) = W(c(k),:);
                k = k+1;
            else
                break  %没有新的聚类中心
            end
        end
        
    case 2
        break
end
%% step6 最小距离法进行分类
%首先计算数据到每个聚类中心的距离
D =zeros(num,length(c));
for i = 1:length(c)
    for j = 1:num
        D(j,i) = norm(z(i,:)-W(j,:));
    end
end
%归类,判断坐标点属于的类别
k = zeros(length(c),1);
for i = 1:num
    [m,n] = min(D(i,:));
    k(i,1) = n;%归类标识
end

%设置颜色
colour = zeros(length(c),3);
for i = 1:length(c)
    colour(i,:) = rand(1,3);
end

for i = 1:length(c)
    v = find(k == i);%位置
    u = length(v);%个数
    M = zeros(u,2);%用来存储所属同一类的点
    for j = 1:u
        M(j,:) = W(v(j),:);
    end
    P = plot(M(:,1),M(:,2),'<');
    set(P,'color',colour(i,:));
end

分析:这种算法聚类结果与选取的第一个聚类中心以及选定的比例系数 θ \thetaθ 有关。这会导致聚类结果不理想,所以个人认为要尽可能避免聚类结果不理想的问题,首先可以找到距离原点最近的一点作为初始的聚类中心,同时 θ \thetaθ 大小根据样本的分布及 ∥ z 1 − z 2 ∥ \Vert z_1-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值