美文网首页
k-近邻算法

k-近邻算法

作者: Silmarillion123 | 来源:发表于2020-11-27 21:16 被阅读0次

    KNN

    计算样本之间的距离,若最近的三个样本的类别为A,则为A类
    常用的距离函数有欧式距离,曼哈顿距离,闵可夫斯基距离,堪培拉距离

    library(mlbench)#用数据而已
    library(class)#knn的包
    library(ggplot2)
    library(pROC)#画roc
    data('PimaIndiansDiabetes2',package = 'mlbench')
    ncol(PimaIndiansDiabetes2)
    nrow(PimaIndiansDiabetes2)
    str(PimaIndiansDiabetes2)##检查数据框格式
    sapply(PimaIndiansDiabetes2,function(x) sum(is.na(x)))#计算NA数据的数量
    #大量缺失值,考虑移除损失严重的特征
    tmp<-(PimaIndiansDiabetes2)
    tmp$insulin<-NULL
    tmp$triceps<-NULL
    tmp<-na.omit(tmp)#去掉有na值的样本
    str(tmp)
    set.seed(2020)
    train<-sample(1:nrow(tmp),600,FALSE)
    
    data<-tmp[,-7]
    data<-scale(data)#中心化后标准化,可自选参数
    fit<-knn (data[train,],
             data[-train,],
             tmp$diabetes[train],
             k=6,
             prob=TRUE)
    tab<-table(fit,tmp$diabetes[-train])
    attributes(fit)
    
    t<-attr(fit,"prob")
    rocobj<-roc(tmp$diabetes[-train],t)#第一个参数为真实分类,第二个参数为预测概率
    
    plot(rocobj,print.auc=TRUE,auc.polygon=TRUE,grid=c(0.1,0.2),grid.col=c('green','red'),max.auc.polygon=TRUE,auc.polygon.col='skyblue',print.thres=TRUE)
    
    image.png

    相关文章

      网友评论

          本文标题:k-近邻算法

          本文链接:https://www.haomeiwen.com/subject/hagxwktx.html