如何在R中找到线性判别分析的混淆矩阵?
为了在R中找到线性判别分析的混淆矩阵,我们可以按照以下步骤操作:
- 首先,创建一个数据框。
- 使用线性判别分析创建新的特征。
- 使用table和predict函数找到线性判别分析的混淆矩阵。
创建数据框
让我们创建一个如下所示的数据框:
Group<-sample(c("I","II","III","IV"),25,replace=TRUE) Score1<-sample(1:10,25,replace=TRUE) Score2<-sample(1:10,25,replace=TRUE) Score3<-sample(1:10,25,replace=TRUE) Score4<-sample(1:10,25,replace=TRUE) df<-data.frame(Group,Score1,Score2,Score3,Score4) df
执行上述脚本后,将生成以下输出(由于随机化,此输出将在您的系统上有所不同):
Group Score1 Score2 Score3 Score4 1 IV 7 5 2 5 2 III 5 3 2 4 3 III 8 9 4 7 4 IV 6 1 1 5 5 III 8 4 6 8 6 IV 9 2 1 7 7 I 3 2 3 2 8 IV 5 8 3 3 9 II 7 4 4 1 10 IV 5 4 1 10 11 II 3 1 2 4 12 III 3 2 1 7 13 IV 1 4 7 6 14 III 10 8 9 2 15 II 3 7 8 1 16 I 9 2 3 1 17 III 2 7 3 2 18 IV 7 7 1 7 19 IV 2 6 1 3 20 I 4 10 6 1 21 I 1 6 4 4 22 I 6 3 6 2 23 III 6 6 3 5 24 I 2 3 10 10 25 II 4 4 2 5
使用线性判别分析创建新的特征
使用MASS包的lda函数为数据框df中的数据查找新特征:
Group<-sample(c("I","II","III","IV"),25,replace=TRUE) Score1<-sample(1:10,25,replace=TRUE) Score2<-sample(1:10,25,replace=TRUE) Score3<-sample(1:10,25,replace=TRUE) Score4<-sample(1:10,25,replace=TRUE) df<-data.frame(Group,Score1,Score2,Score3,Score4) library(MASS) LDA_df=lda(Group~.,data=df) LDA_df
输出
Call: lda(Group ~ ., data = df) Prior probabilities of groups: I II III IV 0.24 0.16 0.28 0.32 Group means: Score1 Score2 Score3 Score4 I 4.166667 4.333333 5.333333 3.333333 II 4.250000 4.000000 4.000000 2.750000 III 6.000000 5.571429 4.000000 5.000000 IV 5.250000 4.625000 2.125000 5.750000 Coefficients of linear discriminants: LD1 LD2 LD3 Score1 0.1358158 0.18645755 -0.18790651 Score2 0.2598956 0.15492088 -0.07433529 Score3 -0.3052648 0.25571648 0.14567716 Score4 0.3117567 0.08656138 0.25216169 Proportion of trace: LD1 LD2 LD3 0.8681 0.1161 0.0159
查找混淆矩阵
使用table和predict函数创建上面执行的线性判别分析的混淆矩阵,如下所示:
Group<-sample(c("I","II","III","IV"),25,replace=TRUE) Score1<-sample(1:10,25,replace=TRUE) Score2<-sample(1:10,25,replace=TRUE) Score3<-sample(1:10,25,replace=TRUE) Score4<-sample(1:10,25,replace=TRUE) df<-data.frame(Group,Score1,Score2,Score3,Score4) library(MASS) LDA_df=lda(Group~.,data=df) table(predict(LDA_df,type="class")$class,df$Group)
输出
I II III IV I 3 2 1 1 II 2 1 0 0 III 1 0 3 1 IV 0 1 3 6
广告