fisher discrimination with R code

本文介绍了一种使用R语言实现的Fisher判别分析方法,通过从数据集中随机抽取样本构建预测模型,并利用剩余数据进行预测检验,计算预测准确率。此过程通过循环执行并计算平均准确率和标准差,适用于分类问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值