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()
在这个示例中,我们使用梯度下降法来更新权重,并将决策边界绘制在二维平面上。
为了更好地理解实际情况下的逻辑回归,我们可以尝试不同的学习率、迭代次数等超参数,并观察模型的性能和决策边界的变化。
在实际应用中,逻辑回归可以应用于许多问题,例如客户流失预测、信用评分、垃圾邮件分类等。逻辑回归在文本分类等问题中也常用于提取特征和建模。
这只是逻辑回归的一个简单示例,实际应用中可能需要更多的特征工程和模型调优。希望这个例子能够给你提供一些启发和帮助!
