开始使用免费开始使用

Logistic 回归算法

让我们深入内部机制,实现一个 logistic 回归算法。由于 statsmodelslogit() 函数非常复杂,您将在这里实现针对单个数据集的简单 logistic 回归。

我们不再使用平方和作为度量,而是使用似然。不过,对数似然在数值上更稳定,因此改用对数似然。实际上还有一个变化:我们希望最大化对数似然,而 minimize() 默认是寻找最小值,所以计算"负对数似然"会更方便。

每个观测的对数似然为: $$ log(y_{pred}) * y_{actual} + log(1 - y_{pred}) * (1 - y_{actual}) $$

需要计算的度量是这些对数似然项的负和。

自变量取自 churntime_since_last_purchase 列,已作为 x_actual 提供。 因变量取自 churnhas_churned 列,已作为 y_actual 提供。 已从 scipy.stats 导入 logistic,并已加载 logit()minimize()

本练习是课程的一部分

Python 中级回归:使用 statsmodels

查看课程

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Complete the function
def calc_neg_log_likelihood(coeffs):
    # Unpack coeffs
    ____, ____ = ____
    # Calculate predicted y-values
    y_pred = ____
    # Calculate log-likelihood
    log_likelihood = ____
    # Calculate negative sum of log_likelihood
    neg_sum_ll = ____
    # Return negative sum of log_likelihood
    return ____

# Test the function with intercept 10 and slope 1
print(calc_neg_log_likelihood([10, 1]))
编辑并运行代码