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

如何查询PCA/LDA模型的预测灵敏度占比及特定类别预测阳性案例占比?

模型评估:灵敏度计算与特定类别预测占比查询

1. 获取模型预测的灵敏度百分比

灵敏度(召回率)的核心是衡量真实属于目标类别的样本中,被模型正确识别的比例。在多分类场景(比如load_digits的10类任务)中,我们需要将目标类别标记为“阳性”,其余类别作为“阴性”来单独计算。

以下是结合PCA降维和分类模型的实现代码:

from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.decomposition import PCA
from sklearn.svm import SVC
from sklearn.metrics import recall_score

# 加载手写数字数据集
digits = load_digits()
X, y = digits.data, digits.target

# 拆分训练集与测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 用PCA降维(保留20个主成分)
pca = PCA(n_components=20)
X_train_pca = pca.fit_transform(X_train)
X_test_pca = pca.transform(X_test)

# 训练支持向量机分类器
model = SVC()
model.fit(X_train_pca, y_train)

# 生成测试集预测结果
y_pred = model.predict(X_test_pca)

# 指定目标类别为第5类,计算灵敏度并转为百分比
target_class = 5
sensitivity = recall_score(y_test, y_pred, pos_label=target_class)
print(f"模型对第{target_class}类的灵敏度:{sensitivity * 100:.2f}%")

2. 查询PCA/LDA中模型对特定类别的预测阳性案例占比

这里的“预测阳性案例占比”通常有两种常见解读,以下分别实现:

2.1 被模型预测为目标类别的样本中,真实属于该类的比例(精确率)

这个指标反映了模型预测为目标类别的结果准确率:

from sklearn.metrics import precision_score

precision = precision_score(y_test, y_pred, pos_label=target_class)
print(f"模型预测为第{target_class}类的样本中,真实属于该类的占比:{precision * 100:.2f}%")

2.2 模型预测为目标类别的样本数占总测试样本的比例

这个指标展示了模型将多少样本判定为目标类别:

predicted_target_count = sum(y_pred == target_class)
total_test_samples = len(y_test)
prediction_ratio = (predicted_target_count / total_test_samples) * 100
print(f"模型预测为第{target_class}类的样本占总测试样本的比例:{prediction_ratio:.2f}%")

替换为LDA算法的实现

如果要使用LDA而非PCA,只需替换降维步骤即可(LDA最多支持n_classes-1个维度):

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA

# LDA降维
lda = LDA(n_components=9)
X_train_lda = lda.fit_transform(X_train, y_train)
X_test_lda = lda.transform(X_test)

# 训练模型并计算指标
model_lda = SVC()
model_lda.fit(X_train_lda, y_train)
y_pred_lda = model_lda.predict(X_test_lda)

# 计算第5类的灵敏度
sensitivity_lda = recall_score(y_test, y_pred_lda, pos_label=target_class)
print(f"LDA+模型对第{target_class}类的灵敏度:{sensitivity_lda * 100:.2f}%")

内容的提问来源于stack exchange,提问作者Laxmi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:40:30