R语言和分类(1)

R语言和分类(1)

1.什么是分类

分类与回归问题一致,都属于有监督(指导)学习,指导回归的因变量是一列数,指导分类的是几个因变量。通过训练数据集训练出一个模型,然后预测其他数据集的类属,这就是分类的目的。
聚类与分类的差别就在于,聚类没有指导,只是看数据本身的聚集情况,来确定类别归属。
在经典统计中,分类被称为判别分析。最近学习需要,梳理一下经典统计的判别分析方法和R语言实现。

2.距离判别分析

首先利用训练数据进行训练,得出模型。计算样品到多个总体的马氏距离,然后根据距离的大小判断类别归属。

R语言实现

加载距离判别函数

library(WMDB)
#用法
wmd(TrnX, TrnG, Tweight = NULL, TstX = NULL, var.equal = F)
  1. TrnX 指训练样本集,要求数据框或矩阵形式
  2. TrnG 要分的类,要求数据形式是factor
  3. TstX 为测试集

示例
以R自带的iris数据为例

library(WMDB) #加载函数
X=iris[,1:4]
G=gl(3,50)
wmd(X,G)  #对原数据判别分析

结果:
[1] “num of wrong judgement”
[1] 69 73 78 84 107 130 134 135
[1] “samples divided to”
[1] 3 3 3 3 2 2 2 2
[1] “samples actually belongs to”
[1] 2 2 2 2 3 3 3 3
Levels: 1 2 3
[1] “percent of right judgement”
[1] 0.9466667

3. fisher判别分析

fisher法不对总体分布有要求,即对于多个总体G1,G2…Gn,找到能使各个总体间方差和最大,各个总体内方差和最小的线性组合:
y = c 1 x 1 + c 2 x 2 + . . . . . + c p x p y=c1x1+c2x2+.....+cpxp y=c1x1+c2x2+.....+cpxp
求出一个或多个判别函数之后,将观测值代入判别函数,求出y值,对比到各类中心距离,即可确定归类。
每个观测值代入函数都可以求得两个系数,利用这两个系数即可实现可视化。这两个系数即是多维数据在二维空间的投影。

library(MASS)
m = sample(1:150,10)
w = lda(Species~.,data=iris[-m,])
w

函数会返回各个变量的LD1和LD2值
如果

plot(w)

则会输出以LD1为横坐标LD2为纵坐标的图像
现在我们进行样本回判,看看误判率有多少

H = predict(w)

现在的H是一个list,包含颜色、LD值、posterior三部分,我们需要提取出样本颜色部分进行判断

a = data.frame(H$class,iris$Species)#原始与判断的对比
1-sum(diag(prop.table(table(a))))#错判率

最后判断剩余样本

predict(w,iris[m,])

判别可视化

library(ggplot2)
b = rownames(iris)
data = cbind(iris[-m,1:4],data.frame(H$x)
p = ggplot(data,aes(LD1,LD2))
p+geom_point(aes(color=Species))+geom_text(label=b)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值