判别分析有关函数介绍

1.classify函数

用classify函数可以进行线性判别分析,其语法格式如下。

class = classify(sample,training,group):将sample中的每一行分到training中的某一个类中。sample和training必须为列数相同的矩阵。group为group的分类变量。它的唯一值定义不同的组,每个元素定义training的对应行属于哪一类。group可以是数值向量、字符串数组或字符串元胞数组。group 和training必须具有相同的行数。classify函数将group中的NaN或空字符串视为缺失值,并忽略training的对应行。该函数返回class,它是一个与sample具有相同行数的向量。class的每个元素指定sample中每行元素的类别。

[class,err]=classify(…):返回错判误差率的估计。该函数返回training中被错判的观测量的百分比。

[…]=classify(…, 'type'):允许指定判断函数的类型,可以是下面的一种:

'linear':默认项,用协方差的合并估计(pooled estimate)拟合每组数据的多变量正态密度。

'quadratic':用类分层协方差估计拟合MVN密度。

'mahalanobis':用分层协方差估计作为马氏距离。

[…]=classify(…, 'type',prior):可以使用先验概率。

prior可以是:长度与group中唯一值个数相同的数值向量。如果group为数值,则prior的次序必须与group中的值索引后的次序对应。或者,如果group包含字符串,则与group中出现的第1个值对应。

Prior可以是11的结构,字段包括prob和group。prob是一个数值向量与group参数的类型相同,其中包含的唯一值表示prob的元素与哪个组对应。作为结构使用时,prior可以包含那些不在group中出现的组。如果training是一个更大训练集的子集,则这一点将很有用。

字符串值'empirical'表示classify函数应该根据training中的分组相对频率估计分组先验概率。

默认时,prior是一个等概率,即均匀分布的数值向量。除计算误差率外,prior函数不会被用于使用马氏距离进行判别分析的计算中。

2.mahal函数

马氏距离是一个将数据集与空间点分隔开的多变量度量。在线性判别分析中,要使它最小化。

用mahal函数可以计算马氏距离,其语法格式如下。

mahal(Y,X):计算X矩阵中的样本至Y矩阵中的每个点(行)的马氏距离。Y的列数必须等于X的列数,但它们的行数可以不同。X的行数必须大于列数。