You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:55:18