Python机器学习算法: 原理、实现与案例
上QQ阅读APP看书,第一时间看更新

2.3 编码实现

2.3.1 Logistic回归

我们基于梯度下降实现一个Logistic回归分类器,代码如下:

上述代码简要说明如下(详细内容参看代码注释):

  • __init__()方法:构造器,保存用户传入的超参数。
  • _z()方法:实现线性函数,计算的内积(即点积,或称为数量积)。
  • _sigmoid()方法:实现logistic函数
  • _predict_proba()方法:实现概率预测函数,计算为正例的概率。
  • _loss()方法:实现损失函数,计算当前下的损失,该方法有以下两个用途。
    • ◆ 供早期停止法使用:如果用户通过超参数tol启用早期停止法,则调用该方法计算损失。
    • ◆ 方便调试:迭代过程中可以每次打印出当前损失,观察变化的情况。
  • _gradient()方法:计算当前梯度
  • _gradient_descent()方法:实现批量梯度下降算法。
  • _preprocess_data_X()方法:对进行预处理,添加列并设置为1。
  • train()方法:训练模型。该方法由3部分构成:
    • ◆ 对训练集的X_train进行预处理,添加列并设置为1。
    • ◆ 初始化模型参数w,赋值较小的随机数。
    • ◆ 调用_gradient_descent()方法训练模型参数
  • predict()方法:预测。对于中每个实例,若模型预测其为正例的概率大于等于0.5,则判为正例,否则判为负例。

2.3.2 Softmax回归

我们再基于随机梯度下降实现一个Softmax回归分类器,代码如下:

上述代码简要说明如下(详细内容参看代码注释)。

  • __init__()方法:构造器,保存用户传入的超参数。
  • _z()方法:实现线性函数,计算各个的内积。
  • _softmax()方法:实现softmax函数
  • _predict_proba()方法:实现概率预测函数,计算为各个类别的概率。
  • _loss()方法:实现损失函数,计算当前下的损失。该方法有以下两个用途:
    • ◆ 供早期停止法使用:如果用户通过超参数tol启用早期停止法,则调用该方法计算损失。
    • ◆ 方便调试:迭代过程中可以每次打印出当前损失,观察变化的情况。
  • _gradient()方法:计算当前梯度
  • _stochastic_gradient_descent()方法:实现随机梯度下降算法。
  • _preprocess_data_X()方法:对进行预处理,添加列并设置为1。
  • train()方法:训练模型。该方法由3部分构成:
    • ◆ 对训练集的X_train进行预处理,添加列并设置为1。
    • ◆ 初始化模型参数w,赋值较小的随机数。
    • ◆ 调用_stochastic_gradient_descent()方法训练模型参数
  • predict()方法:预测。对于中每个实例,计算由各线性函数值构成的向量,以其最大分量的索引作为预测类别。