fisher discrimination with R code

版权声明:版权所有为南京道之先生,转载请注明。 https://blog.csdn.net/alphachx/article/details/83658632

rm(list = ls())#清空所有内存
library("MASS")
xx<-read.csv("D:\\文档\\Tencent Files\\510271461\\FileRecv\\zuoye.csv")
data<-xx
fisher<-function(data,n,form){
  accu<-0
  for (i in 1:10){
    ind<-sample(1:nrow(data),round(0.6*nrow(data)),replace=FALSE)#取出data中的任意6个数据
    
    newdata=data[ind,]#将这6行重新建立数据框,用于预测模型构建
    fm<-lda(form,data=newdata)#构建模型,也就是求解fish判别函数相关系数
    pre<-predict(fm,data[-ind,-1])$class#利用源数据中的剩余数据进行预测检验,$CLASS就是要提取出来预测结果,你这里是male和female
    t<-table(data[-ind,1],pre)#生产一个表,这个可以看书上的例子,就是一个矩阵(行是原始数据结果,列是预测数据结果)的样子差不多,单元格数据为统计值。
    accu[i]<-sum(diag(t))/sum(t)#把表中对角线的数据(也就是预测和实际一致的数据)求和,sum(t)就是把整个table的数据加起来,也就是包括一些预测不对的。
  }
  return(c(mean(accu),sd(accu)))
}

n<-1
form<-as.formula("sex~weight+height")
fisher(data,n,form)

猜你喜欢

转载自blog.csdn.net/alphachx/article/details/83658632
今日推荐