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

求助:为自定义Python逻辑回归模型生成混淆矩阵

解决逻辑回归模型的混淆矩阵生成问题

首先明确:weight是模型的参数,不是预测值。预测值(y_pred)是将测试集输入模型,经过sigmoid激活后,用阈值(通常取0.5)转换得到的0/1分类结果。下面是具体实现步骤:

1. 先修正模型代码中的致命错误

你的model函数里存在拼写错误:weigt = weight - learningRate*dw.T应该改成weight = weight - learningRate*dw.T,这个错误会导致权重完全无法更新,模型训练彻底失效,必须先修正。

2. 训练模型,得到训练后的权重和偏置

调用你写的model函数完成训练:

# 假设X、y已定义,且完成了train_test_split和转置操作
learning_rate = 0.01
iterations = 10000
trained_weight, trained_bias, cost_history = model(x_train, y_train, learning_rate, iterations)

3. 生成测试集的预测分类结果(y_pred)

基于你现有的accuracy函数逻辑,改写一个生成预测结果的函数:

def get_predictions(X, weight, bias):
    z = np.dot(weight.T, X) + bias
    activation = sigmoid(z)
    # 用0.5作为阈值,将概率转换为0/1分类
    predictions = (activation > 0.5).astype('int64')
    # 转成一维数组,和真实标签的形状匹配
    return predictions.flatten()

生成测试集的预测结果与真实标签:

y_pred = get_predictions(x_test, trained_weight, trained_bias)
y_true = y_test.flatten()  # 把转置后的真实标签转成一维数组

4. 用scikit-learn生成混淆矩阵

导入工具并计算:

from sklearn.metrics import confusion_matrix

# 生成混淆矩阵
cm = confusion_matrix(y_true, y_pred)
print("混淆矩阵:")
print(cm)

可选:可视化混淆矩阵

如果需要更直观的展示,用热力图呈现:

import seaborn as sns
import matplotlib.pyplot as plt

sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', 
            xticklabels=['类别0', '类别1'], 
            yticklabels=['类别0', '类别1'])
plt.xlabel('预测标签')
plt.ylabel('真实标签')
plt.title('混淆矩阵')
plt.show()

混淆矩阵说明

混淆矩阵的行代表真实标签,列代表预测标签:

  • cm[0][0]:真实为0且预测为0的样本数(真阴性)
  • cm[0][1]:真实为0但预测为1的样本数(假阳性)
  • cm[1][0]:真实为1但预测为0的样本数(假阴性)
  • cm[1][1]:真实为1且预测为1的样本数(真阳性)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:10:35