R语言马氏距离判别法

 没啥好解释的,就放个代码和运行结果吧

#数据准备
x1<-c(3,3,2,3,3,3,3,3,2,2,1,3,2,1,2,2,2,3,3,2,2,2,2,2)
x2<-c(28,45,55,55,50,70,75,80,50,35,40,50,35,50,40,45,25,40,50,70,70,45,25,25)
x3<-c(2,2,3,3,2,3,3,3,3,1,2,2,2,2,2,2,1,2,3,3,3,2,1,1)
x4<-c(10.4,22,16,14.5,17.5,16.7,12.7,20.2,13.5,18.2,25,15.4,26,22.5,16.5,
	16.4,30,17,14.5,20.2,17,18.4,24.8,40)
x5<-c(18,18,14,11,10,15,12,20,10,5,7,1.5,6,4,2,2.5,5.5,10,13,20,18,2.5,5,5.8)
x6<-c(7.5,11.5,14.5,12.5,15,14,9.5,17,12,15.5,12,13.5,19,10,15,10,15,12,10.5,
	16.5,15,10,15,16)
x7<-c(3,3,3,4,3,2,3,2,3,1,2,3,1,2,1,1,2,2,3,3,2,1,2,3)
y<-factor(c(rep('Collapse',9),rep('Stable',8),rep('Collapse',4),
		rep('Stable',3)),levels=c('Collapse', 'Stable'))
data<-data.frame(x1,x2,x3,x4,x5,x6,x7,y)
#划分训练集
train<-data[1:17,]
test<-data[18:24,1:7]
#挑选类别
d1<-subset(train,y=="Collapse")
dim(d1)
d2<-subset(train,y=="Stable")
dim(d2)
#计算马氏距离并判别
ma1<-mahalanobis(train[1:7],colMeans(d1[,1:7]),cov(d1[,1:7]))
ma2<-mahalanobis(train[1:7],colMeans(d2[,1:7]),cov(d2[,1:7]))
pre<-c()
for(i in 1:17)
{
	if(ma1[i]<ma2[i]) pre[i]<-'Collapse'
	else pre[i]<-'Stable'
}
#合并结果
distance1<-data.frame(ma1,ma2,true=train[,8],pre)
distance1
#测试集结果
ma3<-mahalanobis(test,colMeans(d1[,1:7]),cov(d1[,1:7]))
ma4<-mahalanobis(test,colMeans(d2[,1:7]),cov(d2[,1:7]))
pre<-c()
for(i in 1:7)
{
	if(ma3[i]<ma4[i]) pre[i]<-'Collapse'
	else pre[i]<-'Stable'
}
distance2<-data.frame(ma3,ma4,true=data[18:24,8],pre)
distance2

 

 

 

Matlab中的马氏距离判别是一种常用的异常数据处理方马氏距离是一种反映两个随机变量之间的相关性的度量。在处理异常数据时,我们可以利用马氏距离来判断一个观测值是否属于正常数据。 马氏距离判别基于一个假设,即正常数据在多维空间中呈现出近似于高斯分布的特性。根据这个假设,我们可以计算出正常数据样本的均值向量和协方差矩阵。然后,对于给定的观测值,计算它与均值向量之间的马氏距离。如果这个距离超过了一定的阈值,我们就可以判断这个观测值为异常数据。 在Matlab中,我们可以利用“mahalanobis”函数来计算马氏距离。这个函数可以直接计算给定观测值与正常数据样本均值之间的马氏距离。然后,我们可以设定一个合适的阈值来判断观测值是否为异常数据。 马氏距离判别对于处理异常数据有较好的效果,因为它不仅仅考虑了各个特征的值,还考虑了它们之间的相关性。这使得我们能够更全面地判断一个观测值是否异常。同时,Matlab提供了丰富的函数和工具箱,可以方便地实现马氏距离判别,提高数据处理的效率和准确性。 总而言之,Matlab的马氏距离判别可以很好地处理异常数据。通过利用马氏距离来衡量观测值与正常数据之间的差异,我们能够有效地识别和处理异常数据,提高数据分析的准确性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值