模式识别大作业

发布 2021-03-07 07:07:28 阅读 8054

一、问题描述。

现有sonar和wdbc这两个样本数据集,取一半数据作为训练样本集,其余数据作为测试样本集,通过编程实现分别用c均值算法对测试样本集中的数据进行分类,进行10次分类求正确率的平均值。

二、算法描述。

1.初始化:选择c个代表点。

2.建立c个空间聚类表:

3.按照最小距离法则逐个对样本x进行分类:

4.计算j及用各聚类列表计算聚类均值,并用来作为各聚类新的代表点(更新代表点)

5.若j不变或代表点未发生变化,则停止。否则转2.

6.计算正确率:将dtat(i,1)与trueflag(i,1)(i=1~n)进行比较,统计正确分类的样本数,并计算正确率将上述过程循环10次,得到10次的正确率,并计算平均正确率**e

算法流程图。

三、实验数据。

表1 实验数据。

四、实验结果。

表2 实验结果准确率(%)

注:表中准确率是十次实验结果的平均值。

五、程序源码。

用c均值算法对sonar分类(对wdbc分类的**与之类似)

clc;clear;

accuracy = 0;

for i = 1:10

data = xlsread(''

data = data';

%初始划分2个聚类。

rand(:,1:size(data,2)) data(:,randperm(size(data,2))'使矩阵元素按列重排。

a(:,1) =rand(:,1);

b(:,1) =rand(:,2); 选取代表点。

m = 1;

n = 1;

for i = 3:size(rand,2)

temp1 = rand(:,i) -a(:,1);

temp2 = rand(:,i) -b(:,1);

temp1(61,:)

temp2(61去掉标号后再计算距离。

if norm(temp1)

m = m + 1; %a类中样本个数。

a(:,m) =rand(:,i);

elsen = n + 1; %b类中样本个数。

b(:,n) =rand(:,i);

endend

%划分完成。

m1 = mean(a,2);

m2 = mean(b,2);

%计算jej = 0;

for i = 1:m

temp = a(:,i) -m1;

temp(61去掉标号的均值。

j = j + norm(temp)^2;

endfor i = 1:n

temp = b(:,i) -m2;

temp(61,:)

j = j + norm(temp)^2;

endtest = a,b];

n = 0; %je不变的次数。

while n < m + n

rarr = randperm(m + n); 产生1-208即所有样本序号的随机不重复序列向量。

y = test(:,rarr(1,1));

if rarr(1,1)

if m ==1

continue

elsetemp1 = y - m1;

temp1(61,:)

temp2 = y - m2;

temp2(61,:)

p1 = m / m - 1) *norm(temp1);

p2 = n / n + 1) *norm(temp2);

if p2 < p1

test = test,y];

test(:,rarr(1,1))

m = m - 1;

n = n + 1;

end end

elsey属于b类时。

if n ==1

continue

elsetemp1 = y - m1;

temp1(61,:)

temp2 = y - m2;

temp2(61,:)

p1 = m / m + 1) *norm(temp1);

p2 = n / n - 1) *norm(temp2);

if p1 < p2

test = y,test];

test(:,rarr(1,1))

m = m + 1;

n = n - 1;

end end

enda(:,1:m) =test(:,1:m);

b(:,1:n) =test(:,m + 1:m + n);

m1 = mean(a,2);

m2 = mean(b,2);

计算jetempj = 0;

for i = 1:m

temp = a(:,i) -m1;

temp(61去掉标号的均值。

tempj = tempj + norm(temp)^2;

endfor i = 1:n

temp = b(:,i) -m2;

temp(61,:)

tempj = tempj + norm(temp)^2;

endif tempj ==j

n = n + 1;

elsej = tempj;

endend %while循环结束。

%判断正确率。

correct = 0;

false = 0;

a(:,1:m) =test(:,1:m);

b(:,1:n) =test(:,m + 1:m + n);

c = mean(a,2);

if abs(c(61,1) -1)

for i = 1:m

if a(61,i) =1

correct = correct + 1;

elsefalse = false + 1;

endend

for i = 1:n

if b(61,i) =2

correct = correct + 1;

elsefalse = false + 1;

endend

else聚类a中大多为2类元素。

for i = 1:m

if a(61,i) =2

correct = correct + 1;

elsefalse = false + 1;

endend

for i = 1:n

if b(61,i) =1

correct = correct + 1;

elsefalse = false + 1;

endend

endaccuracy = accuracy + correct / correct + false);

模式识别大作业

一。问题重述。利用fisher线性判别法和最近邻算法对sonar数据进行分类,并得出正确率。二。fisher线性判别法思路。用训练样本求出d维空间到一维空间的投影方向w,进而求出样本均值,进而可求出阈值t,带入测试样本得到投影点y,将y与t相比,即可进行分类判别。2.1 fisher准则函数中的基本...

模式识别大作业

作业1 用身高和 或体重数据进行性别分类 一 基本要求 用和的数据作为训练样本集,建立bayes分类器,用测试样本数据对该分类器进行测试。调整特征 分类器等方面的一些因素,考察它们对分类器性能的影响,从而加深对所学内容的理解和感性认识。具体做法 1 应用单个特征进行实验 以 a 身高或者 b 体重数...

模式识别大作业

一 题目。对sonar和wdbc中数据 如表1所示 进行分类,并将实验结果填入表2。不降维方法用邻近法,降维用fisher判别 表1 实验数据。表2实验结果 准确率 二 fisher线性判别法。fisher线性判别分析的基本思想 通过寻找一个投影方向 线性变换,线性组合 将高维问题降低到一维问题来解...