为何二分类任务的混淆矩阵仅输出单个条目array([[2]])?
问题描述
在仅含10个样本的二分类(0或1)数据集上,使用简单SVM与Logistic Regression模型训练,代码如下:
sc = StandardScaler() X_scaled = sc.fit_transform(X) X_train,X_test,y_train,y_test = train_test_split(X_scaled,y,test_size=0.2,random_state=42) LR.fit(X_train,y_train) y_pred=LR.predict(X_test) print(accuracy_score(y_test,y_pred)) # 输出为1.0 con= confusion_matrix(y_test,y_pred) # 输出为array([[2]]) con.shape # 输出为(1, 1)
尝试打印混淆矩阵时仅得到上述单条目结果,请问原因是什么?
原因分析
- 测试集样本仅包含二分类中的其中一类:总样本数为10,
test_size=0.2对应测试集共2个样本,这2个样本的真实标签属于同一类别(全为0或全为1)。 - 结合模型预测完全正确(准确率1.0),
confusion_matrix只会基于测试集中实际存在的类别生成结果矩阵,因此只会出现1x1的单条目,代表该类别下的所有样本都被正确预测。
验证方法
直接打印测试集的真实标签即可确认类别分布:
print(y_test)
输出会显示两个相同的标签值(例如[0,0]或[1,1]),验证测试集的类别单一性。
内容的提问来源于stack exchange,提问作者Alishba Haider
相关产品推荐
相关产品推荐

