zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    生成器
    迭代器
    装饰器
    Maven工具学习(六)----Maven依赖的版本锁定与版本常量
    SpringBoot学习记录之整合JSP
    SpringBoot学习记录之入门篇
    【k8s】ep-addresses
    【k8s】ep-metadata
    【k8s】Endpoints
    【k8s】cj-suspend
  • 原文地址:https://www.cnblogs.com/xiaomingzaixian/p/9271607.html
Copyright © 2011-2022 走看看