目录
在当今信息时代,数据不断涌现,数据分类是数据挖掘和机器学习中的一个重要问题。数据分类算法旨在将数据点划分为不同的类别,以便于数据分析、决策和模式识别。本文将详细介绍基于GRNN(General Regression Neural Network)网络和FCM(Fuzzy C-Means)的数据分类算法,包括数学原理、实现过程和应用领域。
1.GRNN网络
GRNN是一种神经网络模型,用于建模数据之间的关系。它在模式识别、回归分析和分类等领域具有广泛应用。GRNN,即General Regression Neural Network,中文全称为广义回归神经网络,是由The Lockheed Palo Alto研究实验室在1991年提出的。GRNN是一种新型的基于非线性回归理论的神经网络模型[43,44]。GRNN是建立在非参数核回归基础之上的,该神经网络是以测试样本为后验条件,并从观测样本中计算得到自变量和因变量之间的概率密度函数,然后在计算出因变量关于自变量的回归值。由于GRNN不需要规定模型的类型,只需要设置神经网络的光滑因子参数,GRNN神经网络的光滑因子参数的取值对神经网络的输出影响较大,当光滑因子参数较大的时候,其对应的神经元所覆盖的输入区域就越大;当光滑因子参数较小的时候,神经网络对应的径向基函数曲线较陡,因此神经网络输出结果更接近期望值,但此时光滑度越差。由于GRNN广义回归神经网络是基于非线性核回归分析的神经网络,因此,对于任意一个非独立变量y,其相对于独立变量x的回归分析的过程是计算具有最大概率值y。现假设随机变量x和y的联合概率密度函数为f (x ,y),已知x的观测值为X,则y相对于X的回归,即条件均值为:
2. FCM算法
FCM是一种模糊聚类算法,用于将数据点分成不同的模糊类别。它在聚类分析、模式识别和图像处理等领域广泛应用。FCM的数学原理如下:
基于GRNN网络和FCM的数据分类算法的实现过程主要包括数据预处理、GRNN网络训练、FCM聚类、数据分类等步骤。
3.实现过程
3.1. 数据预处理
在数据分类算法中,首先需要对原始数据进行预处理,包括特征选择、特征缩放和数据清洗等步骤,以便于后续的模型训练和分类。
3.2. GRNN网络训练
将预处理后的数据输入到GRNN网络进行训练。训练过程中,计算每个输入与其他输入的相似度,并根据GRNN的输出计算预测值。
3.3. FCM聚类
将训练好的GRNN网络的输出作为输入,使用FCM算法对数据进行聚类。确定隶属度 u_{ij}uij 和聚类中心 v_jvj,将数据点分成不同的模糊类别。
3.4. 数据分类
将待分类的数据点输入到训练好的GRNN网络,得到输出值。然后,根据FCM聚类结果和GRNN输出,确定数据点所属的类别。
4.核心程序
%% 广义神经网络聚类
net = newgrnn(P2',T2,50); %训练广义网络
a2=sim(net,P1') ; %预测结果
%输出标准化(根据输出来分类)
a2(find(a2<=1.5))=1;
a2(find(a2>1.5&a2<=2.5))=2;
a2(find(a2>2.5&a2<=3.5))=3;
a2(find(a2>3.5&a2<=4.5))=4;
a2(find(a2>4.5))=5;
%% 网络训练数据再次提取
cent1=P1(find(a2==1),:);cent1=mean(cent1);
cent2=P1(find(a2==2),:);cent2=mean(cent2);
cent3=P1(find(a2==3),:);cent3=mean(cent3);
cent4=P1(find(a2==4),:);cent4=mean(cent4);
cent5=P1(find(a2==5),:);cent5=mean(cent5);
for n=1:R1%计算样本到各个中心的距离
ecent1(n)=norm(P1(n,:)-cent1);
ecent2(n)=norm(P1(n,:)-cent2);
ecent3(n)=norm(P1(n,:)-cent3);
ecent4(n)=norm(P1(n,:)-cent4);
ecent5(n)=norm(P1(n,:)-cent5);
end
%选择离每类中心最近的csum个样本
for n=1:csum
[va me1]=min(ecent1);
[va me2]=min(ecent2);
[va me3]=min(ecent3);
[va me4]=min(ecent4);
[va me5]=min(ecent5);
ecnt1(n,:)=P1(me1(1),:);ecent1(me1(1))=[];tc1(n)=1;
ecnt2(n,:)=P1(me2(1),:);ecent2(me2(1))=[];tc2(n)=2;
ecnt3(n,:)=P1(me3(1),:);ecent3(me3(1))=[];tc3(n)=3;
ecnt4(n,:)=P1(me4(1),:);ecent4(me4(1))=[];tc4(n)=4;
ecnt5(n,:)=P1(me5(1),:);ecent5(me5(1))=[];tc5(n)=5;
end
p2=[ecnt1;ecnt2;ecnt3;ecnt4;ecnt5];T2=[tc1,tc2,tc3,tc4,tc5];
%统计分类结果
Confusion_Matrix_GRNN=zeros(6,6);
Confusion_Matrix_GRNN(1,:)=[0:5];
Confusion_Matrix_GRNN(:,1)=[0:5]';
for nf=1:5
for nc=1:5
Confusion_Matrix_GRNN(nf+1,nc+1)=length(find(a2(find(T1==nf))==nc));
end
end
up2178