R语言之LDA算法应用

在R语言中我们用LDA算法的做预测的时候包,主要的MASS包。在这里我就不对于LDA算法进行详细的描述,只是根据问题的需求用R语言解决问题。我们使用的数据是KKNN包中的自带数据miete数据。主要对于该数据进行划分:1/3为测试数据,2/3为训练数据,通过对于数据的观察,预测测试数据中的nmkat对应的值。

观察数据:

library(kknn)
data("miete")
head(miete)
dim(miete)
summary(miete)
划分数据:1/3测试数据,2 /3训练数据

####等样抽取
library(sampling)
n=round(2/3*nrow(miete)/5)
n
sub_train=strata(miete,stratanames="nmkat",size=rep(n,5),method="srswor")
head(sub_train)
#剔除1、3、12 属性
data_train=getdata(miete[,c(-1,-3,-12)],sub_train$ID_unit)
data_test=getdata(miete[,c(-1,-3,-12)],-sub_train$ID_unit)
dim(data_test);dim(data_train)

LDA算法进行预测

##1.LDA算法
library(MASS)
ff1=lda(nmkat~.,data_train)
head(ff1)
ff1$prior
ff1$counts
ff1$means
ff1
ff2=predict(ff1,data_test)
ff2$class
ff2$posterior
table(data_test$nmkat,ff2$class)
准确率的计算:
#错误率的计算
error_data=sum(as.numeric(as.numeric(ff2$class)!=as.numeric(data_test$nmkat)))/nrow(data_test)
error_data
1-error_data

对于LDA算法预测的准确率:

       1   2    3    4     5
  1  56  16   1    1     1
  2  22  40   21  3      0
  3   2   16   35  12    1
  4   0    0    15   43    6
  5   0    0     0    20    51
 error_data
[1] 0.378453
> 1-error_data
[1] 0.621547










你可能感兴趣的:(算法,R语言和数据挖掘)