Fisher判别法、距离判别法、Bayes判别法基本理论、方法:
Fisher判别法
理论基础:
Fisher判别法旨在通过选择合适的投影方向,最大化不同类别之间的类间差异性,同时最小化类内差异性。这种投影方向使得在低维空间中样本点的类别可分性最大化。
方法概述:
Fisher判别法通过计算类别之间的散布矩阵和类内散布矩阵,然后将其转化为广义特征值问题。通过求解广义特征值问题,得到最佳的投影方向(判别函数),以实现类别的有效区分。
距离判别法
理论基础:
距离判别法基于样本之间的距离度量,将样本点划分到最近的类别中。它通过计算不同类别之间的距离,以及类内样本之间的距离,来实现分类的目标。
方法概述:
距离判别法中常用的方法是最近邻分类算法。对于给定的样本点,通过计算其与训练集中各个样本点的距离,并选择最近的K个样本,根据这K个样本的类别进行投票,从而确定该样本点所属的类别。
Bayes判别法
理论基础:
Bayes判别法基于贝叶斯定理,考虑了样本的先验概率和条件概率,通过计算后验概率来进行分类。它将样本点划分到使得后验概率最大化的类别中。
方法概述:
Bayes判别法涉及计算类别的先验概率、各个类别下的条件概率密度函数,以及使用贝叶斯公式计算后验概率。通过比较后验概率,将样本分配给具有最高后验概率的类别。
实验实例和数据资料:
调用R自带数据iris3:鸢尾花数据(iris3)(花瓣,花萼的长宽) 4个变量:花瓣长(slen),花瓣宽(swid), 花萼长(plen), 花萼宽(pwid), 分类号(1:Setosa, 2:Versicolor, 3:Virginica),每类设置前47个为训练样本,后3个为待判样品;用三种判别方法进行判别分析。
实验步骤
载入数据集并查看数据结构。使用以下代码载入iris3数据集;
data(iris3)
head(iris3)
结果如下
划分训练样本和待判样品;
train <- rbind(iris3[1:47, , 1], iris3[1:47, , 2], iris3[1:47, , 3])
test <- rbind(iris3[48:50, , 1], iris3[48:50, , 2], iris3[48:50, , 3])
结果如下
执行Fisher判别分析;
library(MASS)
train_labels <- rep(1:3, each = 47)
fisher_model <- lda(train, train_labels)
fisher_pred <- predict(fisher_model, newdata = test)
fisher_pred$class
结果如下
执行距离判别分析;
library(class)
train_labels <- rep(1:3, each = 47)
distance_pred <- knn(train, test, train_labels, k = 1)
distance_pred
结果如下
Bayes判别分析。
library(e1071)
train_labels <- rep(1:3, each = 47)
bayes_model <- naiveBayes(train, train_labels)
bayes_pred <- predict(bayes_model, newdata = test)
bayes_pred
结果如下