R语言学习笔记:判别分析和聚类分析

1.判别分析:根据已知分类建立判别方法

距离判别法:

计算距离:dist()

 

dist(x, method = "euclidean", diag = FALSE, upper = FALSE, p = 2)

x表示数据矩阵;method用于指定计算方法,默认“euclidean”为欧氏距离,“manhattan”绝对值距离,“maximum”切比雪夫距离,“minkowski”闵可夫斯基距离,“canberra”兰氏距离,“binary”定性样本的距离;diag为TRUE,输出距离矩阵的对角线;upper为TRUE,输出距离矩阵的上三角部分。

 

马氏距离:mahalanobis()

 

mahalanobis(x, center, cov, inverted = FALSE,...)

x是样本数据的向量或矩阵;center是分布的均值;cov是分布的协方差矩阵,通常用样本值做估计;inverted是逻辑值,若为TRUE则cov应包含协方差矩阵的逆。

 

距离判别分析:wmd():WMDB包,自动计算马氏距离判别分析

 

wmd(TrnX, TrnG, Tweight = NULL, TstX = NULL, var.equal = F)

TrnX是训练样本的矩阵或数据框;TrnG用于表示已知的训练样本的分类,必须为因子向量;Tweight指定权重;TstX是待测数据的矩阵或数据框,默认为NULL,对训练样本进行判别分析;var.equal指定总体是否具有相等的协方差阵,默认为FALSE

 

Fisher判别法

lda():MASS包,最常用的判别分析

 

lda(formula, data, ..., subset, na.action)

formula是形如groups~x1+x2的公式,左侧表示分组(因子),右侧指定指标变量(非因子);data指定数据集;subset是索引向量,指定训练样本;na.action指定对缺失值的处理方式;

 

 

lda(x, grouping, ..., subset, na.action)

x是包含解释变量的矩阵或数据框;grouping是一个因子向量,指定每个观察值的类别

 

使用lda进行判别模型的建立,然后使用predict()对新数据进行分类。

可以对训练样本进行判别,然后用卡房检验chisq.test(class,class.pre)对准确度进行检验

贝叶斯判别法

dbayes():WMDB包

 

dbayes(TrnX, TrnG, p = rep(1, length(levels(TrnG))), TstX = NULL, var.equal = FALSE)

用法类似于wmd();TrnX是训练样本的矩阵或数据框;TrnG用于表示已知的训练样本的分类,必须为因子向量;p是指定先验概率的向量;TstX是待测数据的矩阵或数据框,默认为NULL,对训练样本进行判别分析;var.equal指定总体是否具有相等的协方差阵,默认为FALSE

 

2.聚类分析

分层聚类

hclust()

 

hclust(d, method = "complete", members = NULL)

d是dist()返回的距离对象;method指定系统聚类的方法,默认是complete,最长距离法,“ward”离差平方和法,“single”最短距离法,“median”中间距离法;members默认为NULL,或与d长度相等的向量。

 

可以使用plot()或plclust()绘制谱系图

 

plot(x, labels = NULL, hang = 0.1, axes = TRUE, frame.plot = FALSE, ann = TRUE,...)

x是分层聚类的对象;labels表示是否显示标签;hang表示谱系图中各类别所在的位置,hang为负时,将从底部开始绘制谱系图的类。

 

可以使用cutree()将数据分类

K均值聚类

kmeans()

 

kmeans(x, centers, iter.max = 10, nstart = 1, algorithm = c("Hartigan-Wong", "Lloyd", "Forgy", "Macqueen"))

x是待研究的数据矩阵;centers是指定分类个数的数值或指定聚类中心的初值;centers指定了聚类个数则nstart表示选取的随机集个数;iter.max是最大迭代数,默认为10;algorithm表示具体的算法,默认为“Hartigan-Wong”

 

可用sort(KM$culster)对分类情况排序
 


 


 

 






 

你可能感兴趣的:(R)