欢迎访问宙启技术站
智能推送

Python中利用sigmoid函数进行逻辑回归的实践

发布时间:2024-01-18 04:23:41

逻辑回归是一种常用的二分类算法,用于预测离散型目标变量的概率。在逻辑回归中,我们使用sigmoid函数(也称为逻辑函数)将线性模型的输出转化为概率值。

sigmoid函数定义为:$f(x) = \frac{1}{1+e^{-x}}$

在Python中,我们可以使用NumPy库来实现sigmoid函数,并进行逻辑回归的实践。接下来,我将提供一个使用示例。

首先,我们需要导入所需的库:

import numpy as np
import matplotlib.pyplot as plt

接下来,我们定义sigmoid函数:

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

然后,我们创建一些用于训练逻辑回归模型的示例数据:

np.random.seed(0)
x1 = np.random.normal(2, 1, 100)
x2 = np.random.normal(3, 1, 100)
X = np.concatenate((x1, x2))
y = np.concatenate((np.zeros(100), np.ones(100)))

在这个例子中,我们模拟了两个特征变量x1和x2,并使用正态分布生成了100个样本点。

接下来,我们使用逻辑回归模型进行训练和预测,以及绘制决策边界:

weights = np.random.randn(3)  # 初始化权重
lr = 0.1  # 设定学习率
n_iterations = 1000  # 迭代次数

# 添加偏置项
X = np.column_stack((np.ones(len(X)), X))

# 梯度下降训练模型
for _ in range(n_iterations):
    y_pred = sigmoid(np.dot(X, weights))
    gradient = np.dot(X.T, (y - y_pred))
    weights += lr * gradient

# 绘制决策边界
x_vals = np.linspace(np.min(X[:, 1]), np.max(X[:, 1]), 100)
y_vals = -(weights[0] + weights[1] * x_vals) / weights[2]
plt.scatter(x1, np.zeros(100))
plt.scatter(x2, np.ones(100))
plt.plot(x_vals, y_vals, 'r')
plt.xlabel('x1')
plt.ylabel('x2')
plt.title('Decision Boundary')
plt.show()

在这个示例中,我们使用梯度下降法来更新权重,并将决策边界绘制在二维平面上。

为了更好地理解实际情况下的逻辑回归,我们可以尝试不同的学习率、迭代次数等超参数,并观察模型的性能和决策边界的变化。

在实际应用中,逻辑回归可以应用于许多问题,例如客户流失预测、信用评分、垃圾邮件分类等。逻辑回归在文本分类等问题中也常用于提取特征和建模。

这只是逻辑回归的一个简单示例,实际应用中可能需要更多的特征工程和模型调优。希望这个例子能够给你提供一些启发和帮助!