使用LDA线性判别分析时predict函数返回NULL,无法生成混淆矩阵
问题原因与解决方法
你的问题出在提取预测结果的字段名错误:predict.lda()函数返回的列表中,存储预测类别的元素名称是class,而非你写的default,直接调用$default自然会得到NULL。
修正后的代码
library(ISLR) library(MASS) data(Default) set.seed(42); TrData = sample(nrow(Default), nrow(Default)*0.5) TrSet = Default[TrData,] fit= lda(default ~ income+balance, data=TrSet) # 修正:用$class提取预测类别 fit.p = predict(fit, newdata=TrSet[,-c(1)])$class
生成混淆矩阵
现在可以用table()函数生成混淆矩阵,对比真实标签和预测结果:
confusion_matrix <- table(TrSet$default, fit.p) print(confusion_matrix)
补充说明
如果需要查看LDA预测的后验概率,可以调用predict(fit, newdata=TrSet[,-c(1)])$posterior,这个矩阵会包含每个样本属于各类别的概率值。
内容的提问来源于stack exchange,提问作者BathStackExchange
相关产品推荐
相关产品推荐

