R语言中基于聚类的离群点挖掘

思路:首先,通过K-means算法将数据点划分为成若K个簇;然后计算每一个数据对象到最近簇的中心距离,来与离群点设置的阈值进行比较,以此来判别该数据对象是否是离群点。

1.读取数据

data<- read.csv(read_file,header = T)

2.K-meas聚类

# 设置聚类数
center_num <- 5
# 调用kmeans
km <- kmeans(data,center_num)

3.计算各样本数据到最近中心的距离(nrow=189261是样本记录个数,根据实际情况进行设置)

#各样本欧式距离
for(i in 1:center_num){
   distance <- data.frame(sqrt(rowSums((new_data-matrix(km$centers[i,],nrow=189261,ncol=center_num,byrow=T))^2)))
}
#欧氏距离最小值
y=apply(distance,1,min)

4.绘制离群点图

# 设置阈值为2.5
y_lable <- 2.5
sub=which(y>y_lable)
y1=y[-sub]
y2=y[sub]
plot(1:length(y),y,xlim=c(0,length(y)),xlab=paste("样本点","(dist=",y_lable,")",sep=""),ylab="欧氏距离",col="blue")
points(which(y>y_lable),y2,pch=19,col="red")
dev.off()

 

转载于:https://www.cnblogs.com/xiaomingzaixian/p/9271607.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值