10.10

1. 假设有一个二分类的数据集,共含有100个样本,其中正例和负例的比例是1:1,使用某分类模型采用五折交叉验证实验三次,子集与原数据集独立同分布,结果如下。

表 1. 五折交叉验证正例分类结果统计

D1为测试集 D2为测试集 D3为测试集 D4为测试集 D5为测试集

第一次 9/2            8/3            9/2              7/1               7/0

第二次 9/1            8/2          11/1             12/2              10/0

第三次 10/1            11/3          15/6             10/0              12/2

*其中m/n表示一共识别出正例m个,识别错误正例n个。

(1)根据上述实验结果,计算该分类模型的正确率。

 

(2)根据上述实验结果完成分类结果混淆矩阵。

表 2. 分类结果混淆矩阵

真实情况    预测结果

       正例               负例

正例

负例

 

(3)计算该模型的查准率(准确率)、查全率(召回率)和F1。

 

(可手写拍照上传,在纸上明显位置写清楚学号姓名)

我的答案:
 

(1)计算正确率: 首先,我们需要计算每次五折交叉验证中的正确分类的样本数,然后求平均。 对于每一次五折交叉验证: 第一次:(9+2+8+3+9+2+7+1+7+0)/(2×5×10)=0.9 (因为正例负例各半,所以总数是 2×5×5=50) 第二次:(9+1+8+2+11+1+12+2+10+0)/50=0.96 第三次:(10+1+11+3+15+6+10+0+12+2)/50=0.94 然后,我们计算三次五折交叉验证的平均正确率: (0.9+0.96+0.94)/3=0.9333 所以,该分类模型的正确率为 93.33%。

表 2. 分类结果混淆矩阵
 真实情况\预测结果 正例            负例 

正例                        110(TP) 19(FN) 

负例                         29(FP)   21*(TN,基于近似计算)

(3)计算查准率(准确率)、查全率(召回率)和F1: 查准率(Precision):TP/(TP+FP)=110/(110+29)≈0.7870 查全率(Recall,又称召回率):TP/(TP+FN)=110/(110+19)≈0.8530 F1值:2×(Precision×Recall)/(Precision+Recall)=2×(0.7870×0.8530)/(0.7870+0.8530)≈0.8186

2. (简答题)

请写出一般线性回归(最小二乘法线性回归)的伪代码

 

我的答案:
 

伪代码:  

  

函数 最小二乘法线性回归(X, y):  

    # 初始化  

    β = 零向量(n)  # n是X的行数(特征数量+1,如果包含截距)  

    X_T = X的转置()  

    XX_T = X * X_T  # 矩阵乘法  

  

    # 计算β  

    XX_T_inv = XX_T的逆()  # 注意:这里需要确保XX_T是可逆的  

    Xy = X * y  # 矩阵与向量的乘法  

    β = XX_T_inv * Xy  # 矩阵与向量的乘法  

  

    # 返回结果  

    返回 β  

3. (简答题)

请写出对数几率线性回归算法的伪代码。

(可手写拍照提交,纸上写明学号姓名)

我的答案:
 

伪代码:  

  

函数 对数几率线性回归(X, y, α, ε, num_iterations):  

    # 初始化  

    m, n = X.shape  # m为样本数,n为特征数  

    β = 零向量(n+1)  # 初始化β,包含偏置项  

    X = 添加截距项(X)  # 在X前添加一列全为1的列向量  

  

    # 梯度下降优化  

    对于 i 从 1 到 num_iterations:  

        p = sigmoid(X * β)  # 计算预测概率  

        g = (1/m) * X' * (p - y)  # 计算梯度  

        β = β - α * g  # 更新β  

          

        # 检查收敛条件  

        if 梯度的模(g) < ε:  

            break  # 如果梯度足够小,则提前停止迭代  

  

    # 返回结果  

    返回 β  

  

# 辅助函数:sigmoid  

函数 sigmoid(z):  

    返回 1 / (1 + exp(-z))  

posted @ 2024-10-16 17:46  七安。  阅读(86)  评论(0)    收藏  举报