SVMOneVsRest多标签分类任务输出的预测概率矩阵结果很差。

主要思路:

附代码:

关注一、核心问题定位
现象描述:
0.999999...(如第4行最大值为 0.999999980398254),验证了概率输出饱和问题问题本质:
二、代码层面关键问题
np.transpose 和 reshape 操作可能导致原始数据时空关系破坏kernel='linear') 在低维空间(PCA降维后)难以捕捉多标签非线性关系probability=True 使用Platt缩放校准概率,但多标签场景下校准效果差1e-7,表明降维后存在特征退化三、改进建议
生成组合特征
poly = PolynomialFeatures(degree=2, interaction_only=True, include_bias=False)
X_train_poly = poly.fit_transform(X_train)
X_test_poly = poly.transform(X_test)
使用分类器链+随机森林
base_model = RandomForestClassifier(n_estimators=100, class_weight='balanced')
model = ClassifierChain(base_model, order='random')
校准后的SVM
svc = SVC(kernel='rbf', C=1, gamma='scale', probability=False)
calibrated_svc = CalibratedClassifierCV(svc, method='isotonic', cv=3)
model = OneVsRestClassifier(calibrated_svc)
四、补充分析
结果表格解读(图一):
1.000000994736041e-07,表明存在数值下溢np.clip(probas, 1e-10, 1-1e-10) 限制概率输出范围多标签评估指标:
Hamming Loss 或 Jaccard Similarity 替代准确率五、实施路线图
通过上述改进,可有效缓解概率输出饱和问题,提升模型对组合标签的判别能力。建议优先尝试 ClassifierChain+RandomForest 方案。