资源描述
模
式
识
别
结
业
论
文
(采用聚类分析的方法对两种葡萄进行分类)
采用聚类分析的方法对两种葡萄进行分类
摘要
根据酿酒葡萄的理化指标和葡萄酒的质量对这些酿酒葡萄进行分级,建立聚类分析模型。首先因为样品酒的60个指标之间具有较强的相关性,所以对变量指标进行R型聚类分析,降低变量个数;然后采用Q型聚类分析对样本进行分类。把两组样品葡萄分为5类。红葡萄分类结果:第一类:样品8(反式白藜芦醇苷指标为5.283,而其他样品都小于1);第二类:样品3(氨基酸指标为8397.28远大于该指标均值2385.31)第三类:样品10(VC含量10.25,远大于均值0.477);第四类:样品1、2、4、5、6、7、9、12、13、14、15、16、17、18、19、20、21、22、23、24、25、26、27;第五类:酒样品11(花色苷指标为104.92,远大于均值7.787);
关键词: R型聚类 Q型聚类
1问题分析
要根据酿酒葡萄和葡萄酒的质量的这两种葡萄进行分级,首先对原始酿酒葡萄的理化指标数据进行整理,并把葡萄酒的平均质量指标作为葡萄的变量指标进行考虑。由于白葡萄和红葡萄的分析方法相同,所以我们以红葡萄为例来进行分析。
首先定性考察反映红葡萄指标状况的60个方面,可以看出某些指标之间可能存在较强的相关性。比如氨基酸的总量与天门冬氨酸、苏氨酸、丝氨酸、谷氨酸、脯氨酸、甘氨酸、丙氨酸、胱氨酸、缬氨酸、蛋氨酸、异亮氨酸、酪氨酸、苯丙氨酸、赖氨酸、组氨酸、精氨酸之间可能存在较强的相关性,白藜芦醇与反式白藜芦醇苷、顺势白藜芦醇苷、反式白藜芦醇、顺势白藜芦醇之间可能存在较强的相关性,还原糖与果糖和葡萄糖之间存在较强的相关性,为了验证这种想法,运用MATLAB软件计算60个指标的相关系数矩阵.
其次由相关性矩阵可以判断某些指标之间确实存在很强的相关性,因此可以考虑从这些指标中选取几个有代表性的指标进行聚类分析。为此,把60个指标根据其相关性进行R型聚类,聚成20类,再从每个类中选取代表性的指标。首先对每个变量的数据分别进行标准化处理。变量间相近性度量采用相关系数,类间相近性度量的计算选用类平均法,编写MATLAB程序,从而求出聚类树形图。
最后根据这20个变量指标对27中红葡萄进行聚类分析。首先对每个变量的数据分别进行标准化处理,样本间相似性采用欧氏距离度量,类间距离的计算选用类平均法,编写MATLAB程序,从而得到葡萄聚类树形图。
2模型的建立与求解
根据求得的相关系数矩阵,采用R型分析和Q型分析的方法对葡萄进行分类,具体的数学模型如下:
(1)首先对葡萄的指标进行标准化处理,然后通过下面的模型可以求出葡萄变量指标的相关系数矩阵;
(2)然后采用最短距离法求出相关系数矩阵中两个类中最近两点间的距离,再采用dendrogram函数,即可画出葡萄变量指标的聚类树形图;
(1) 最后对每个变量指标的数据分别进行标准化处理,样本间间的相似性采用欧氏距离度量,类间距离的计算选用类平均法,然后再次使用dendrogram函数求出葡萄的聚类树状图,从而得到葡萄的分类结果。
3模型的结果与分析
1)红葡萄分类的结果与分析如下:
(1)对红葡萄变量的聚类树状图:
图1 对红葡萄变量的聚类树状图
由图形和MATLAB程序可知,把葡萄的变量指标分为20类,其中还原糖,果糖,葡萄糖,可溶性物质,PH值、可滴定酸,顾酸比,干物质含量,果穗质量,百粒质量,果梗比,出汁率,果皮质量,L*,果皮颜色a+,果皮颜色b*,H,C,18个变量指标之间有较大的相关性,被聚到一起;氨基酸,脯氨酸,花色苷3个变量指标之间存在有较大的相关性,被聚到一起;丝氨酸,缬氨酸,异亮氨酸,亮氨酸,赖氨酸,组氨酸,精氨酸之间存在较大的相关性,被聚成一类;白藜芦醇和顺势白藜芦醇苷之间存在较大的相关性,被聚成一类;黄酮醇。槲皮素,异鼠李素,总糖之间存在较大的相关性,被聚成一类;苏氨酸,谷氨酸,丙氨酸,苹果酸,柠檬酸,多酚氧化酶,褐变度,DPPH自由基,总酚,单宁,葡萄总黄酮之间存在较大的相关性,被聚成一类;其余各自成一类。这样就从60个指标中选定20个分析指标,可以根据这35个指标对27种红葡萄进行聚类分析。
(2)27种红葡萄聚成5类的树状图
图2 27种红葡萄聚成5类的树状图
由图可知,各种红葡萄之间存在较大的差异,可把27种葡萄分为4类,结果为:
第一类:红葡萄样品8;第二类:红葡萄样品3;第三类:红葡萄样品10;第四类:红葡萄样品1,2,4,5,6,7,9,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27;第五类:红葡萄酒样品11.
从以上结果结合聚类图中的合并距离可以看出,红葡萄样品8与其他样品有非常大的不同,主要表现在该样品的苹果酸,柠檬酸,褐变度,黄酮醇,远高于其他样品;红葡萄样品3与其他样品的情形不同,单独聚为一类,主要表现在样品3的氨基酸含量远远高于所有样品氨基酸含量的平均值;红葡萄样品10与其他样品不同,单独聚为一类,主要表现在样品10的多酚氧化酶活力指标远大于该指标的平均值;红葡萄样品11单独聚为一类,主要在于该样品的花色苷,白藜芦醇,果皮颜色等偏高德缘故;其他样品之间极为类似,所以被聚在一类。针对这种情况,厂家在购买葡萄时,应该注意挑选,以使所买葡萄包含所有的类别,以提高葡萄的市场价值。
2、白葡萄分类结果与分析如下:
(1)对白葡萄变量的聚类树状图:
图3 白葡萄变量的聚类树状图
由图形和MATLAB程序可知,把白葡萄的变量指标分为20类,其中柠檬酸,反式白藜芦醇苷2变量指标之间有较大的相关性,被聚到一起;白藜芦醇,顺势白藜芦醇苷2个变量指标之间存在有较大的相关性,被聚到一起;褐变度,顺势白藜芦醇2个变量指标之间存在较大的相关性,被聚成一类;PH值和顾酸比2个变量指标之间存在较大的相关性,被聚成一类;氨基酸总量,天门氨酸,苏氨酸,丝氨酸,谷氨酸,脯氨酸,甘氨酸,丙氨酸,缬氨酸,蛋氨酸,异亮氨酸,亮氨酸,酪氨酸,苯丙氨酸,赖氨酸,组氨酸,精氨酸,蛋白质,酒石酸,苹果酸,总酚,单宁,葡萄总黄酮,黄酮醇,槲皮素,山奈酚,异鼠李素,总糖,还原糖,果糖,葡萄糖,可溶性固形物,干物质含量,L*,果皮颜色b*,H,C,这37个变量指标之间存在较大的相关性,被聚成一类。这样就从60个指标中选定20个分析指标,可以根据这20个指标对28种白葡萄进行聚类分析。
(2)28种白葡萄聚成5类的树状图
图4 28种白葡萄聚成5类的树状图
由图可知,各种白葡萄之间存在较大的差异,可把28种葡萄分为5类,结果为:
第一类:白葡萄样品21;第二类:白葡萄样品15;第三类:白葡萄样品11;第四类:白葡萄样品2,3,4,5,6,7,8,9,10,11,12,13,14,16,18,19,20,22,23,24,25,26,27,28;第五类:红葡萄酒样品17.
从以上结果结合结合聚类图中的合并距离可以看出,白葡萄21与其他样品有非常大的不同,主要表现在,该样品褐变度和b*指标非常高,而葡萄总黄酮远低于其他样品;样品15与其他样品极为不同,被单独聚为一类,主要是该样品的白藜芦醇,果穗质量,百粒质量非常高的缘故;白葡萄样品11被单独聚为一类,主要表现在该样品的固酸比,果穗质量,L*偏高;样品17与其他样品不同,单独聚为一类,主要是在该样品的VC含量,果梗比非常高的原因;其他的样品极为相似,被聚在一起。针对这种情况,厂家在购买葡萄时,应该注意买各种各样的葡萄,以使所买葡萄包含所有的类别。
4 模型的评价
该聚类分析模型通过R型聚类对葡萄的变量指标进行聚类,通过Q型聚类在变量指标聚类下对酿酒葡萄进行聚类,把葡萄聚成了5类,符合客观实际。聚类前,对相关系数矩阵做了定性的分析,可看出某些变量指标之间存在存在相关性,所以首先就考虑,聚类变量,减少变量个数,简化运算,很容易得出结果。该模型还可以通过改变对葡萄的分类的大小,使分类结果更加详细或粗略。另外,该数学模型也存在一些不足之处,例如考虑问题不太全面,模型太过单一。
参考文献:
[1].许国根.模式识别与智能计算的MATLAB实现[M].北京.北京航空航天大学出版社,2012.7
[2].韩中庚.数学建模方法及其应用[M].北京.高等教育出版社,2009.6
程序:
(1)红葡萄程序
function hongputao
h=xlsread('分类1红酒') %读入整理后的红葡萄的数据
r=corrcoef(h) %求出读入数据的相关系数
d=tril(r) %取出相关系数矩阵的下三角元素
for i=1:60 %对角线元素化为0
d(i,i)=0
end
d=d(:)
d=nonzeros(d) %取出非零元素
d=d';d=1-d;
z=linkage(d)
y=cluster(z,20)
dendrogram(z,60) %画出聚类树状图
%将白葡萄的变量分为30类
dendrogram(z,60) %画出聚类树状图
ind1=find(y==20);ind1=ind1'%找出包含每一类中的来自原始数据集的对象
ind2=find(y==19);ind2=ind2'
ind3=find(y==18);ind3=ind3'
ind4=find(y==17);ind4=ind4'
ind5=find(y==16);ind5=ind5'
ind6=find(y==15);ind6=ind6'
ind7=find(y==14);ind7=ind7'
ind8=find(y==13);ind8=ind8'
ind9=find(y==12);ind9=ind9'
ind10=find(y==11);ind10=ind10'
ind11=find(y==10);ind11=ind11'
ind12=find(y==9);ind12=ind12'
ind13=find(y==8);ind13=ind13'
ind14=find(y==7);ind14=ind14'
ind15=find(y==6);ind15=ind15'
ind16=find(y==5);ind16=ind16'
ind17=find(y==4);ind17=ind17'
ind18=find(y==3);ind18=ind18'
ind19=find(y==2);ind19=ind19'
ind20=find(y==1);ind20=ind20'
function honhputao2
h=xlsread('分类1红酒');%输入红葡萄的数据
h(:,44:60)=[];%把有较大相关性的指标聚在一起
h(:,41:42)=[];
h(:,39)=[];
h(:,34)=[];
h(:,24:31)=[];
h(:,22)=[];
h(:,20)=[];
h(:,17:19)=[];
h(:,14)=[];
h(:,13)=[];
h(:,11)=[];
h(:,9)=[];
h(:,7)=[];
h(:,6)=[];
h=zscore(h)%对聚类后的数据进行标准化处理
y=pdist(h)
z=linkage(y)
y=cluster(z,5)%将红葡萄分为5类
dendrogram(z,'average')%画出红葡萄的聚类树状图
dendrogram(z,'average')%画出红葡萄的聚类树状图
dendrogram(z,27) %画出红葡萄聚类树状图
ind1=find(y==5);ind1=ind1'%找出包含每一类中的来自原始数据集的对象
ind2=find(y==4);ind2=ind2'
ind3=find(y==3);ind3=ind3'
ind4=find(y==2);ind4=ind4'
ind5=find(y==1);ind5=ind5'
(2)白葡萄程序
function baiputao1
b=xlsread('分类2白酒') %读入整理后的白葡萄的数据
r=corrcoef(b) %求出读入数据的相关系数
d=tril(r) %取出相关系数矩阵的下三角元素
for i=1:60 %对角线元素化为0
d(i,i)=0
end
d=d(:)
d=nonzeros(d) %取出非零元素
d=d';d=1-d;
z=linkage(d)
y=cluster(z,20)%将白葡萄的变量分为30类
dendrogram(z,60) %画出聚类树状图
ind1=find(y==20);ind1=ind1'%找出包含每一类中的来自原始数据集的对象
ind2=find(y==19);ind2=ind2'
ind3=find(y==18);ind3=ind3'
ind4=find(y==17);ind4=ind4'
ind5=find(y==16);ind5=ind5'
ind6=find(y==15);ind6=ind6'
ind7=find(y==14);ind7=ind7'
ind8=find(y==13);ind8=ind8'
ind9=find(y==12);ind9=ind9'
ind10=find(y==11);ind10=ind10'
ind11=find(y==10);ind11=ind11'
ind12=find(y==9);ind12=ind12'
ind13=find(y==8);ind13=ind13'
ind14=find(y==7);ind14=ind14'
ind15=find(y==6);ind15=ind15'
ind16=find(y==5);ind16=ind16'
ind17=find(y==4);ind17=ind17'
ind18=find(y==3);ind18=ind18'
ind19=find(y==2);ind19=ind19'
ind20=find(y==1);ind20=ind20'
function baiputao2
h=xlsread('分类2白酒');%输入白葡萄的数据
h(:,58:60)=[];%把有较大相关性的指标聚在一起
h(:,56)=[];
h(:,50)=[];
h(:,47)=[];
h(:,39:46)=[];
h(:,37)=[];
h(:,32)=[];
h(:,29:31)=[];
h(:,27)=[];
h(:,25)=[];
h(:,24)=[];
h(:,11:20)=[];
h(:,2:9)=[];
h=zscore(h)%对聚类后的数据进行标准化处理
y=pdist(h)
z=linkage(y)
y=cluster(z,5)%将白葡萄的变量分为30类
dendrogram(z,'average')%画出红葡萄的聚类树状图
dendrogram(z,28) %画出白葡萄聚类树状图
ind1=find(y==5);ind1=ind1'%找出包含每一类中的来自原始数据集的对象
ind2=find(y==4);ind2=ind2'
ind3=find(y==3);ind3=ind3'
ind4=find(y==2);ind4=ind4'
ind5=find(y==1);ind5=ind5'
展开阅读全文