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

Python编程:如何使用Sigmoid函数进行逻辑回归

发布时间:2023-12-11 04:55:17

在Python编程中,使用Sigmoid函数进行逻辑回归是非常常见的操作。逻辑回归是一种广泛用于分类问题的机器学习算法。Sigmoid函数是一种常用的激活函数,也被称为Logistic函数。它的公式如下:

f(x) = 1 / (1 + e^(-x))

Sigmoid函数的输出范围在0到1之间,可以将输出解释为概率值,用于分类问题。

下面我们来看一个具体的例子。假设我们有一个数据集,其中包含了一些学生的考试成绩和是否被录取的标签。我们的目标是根据学生的考试成绩来预测他们是否被录取。

首先,我们需要导入必要的库和数据集。在这个例子中,我们将使用NumPy库来进行数值计算,并使用Scikit-learn库中的make_blobs函数生成一个随机的二分类数据集。

import numpy as np
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt

# 生成随机二分类数据集
X, y = make_blobs(n_samples=100, centers=2, random_state=0, cluster_std=1.0)

# 将数据集可视化
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.xlabel("Exam 1 Score")
plt.ylabel("Exam 2 Score")
plt.show()

接下来,我们定义Sigmoid函数。

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

然后,我们为逻辑回归模型定义代价函数和梯度下降算法。

def cost_function(theta, X, y):
    m = len(y)
    h = sigmoid(X.dot(theta))
    cost = (1/m) * np.sum(-y * np.log(h) - (1-y) * np.log(1-h))
    return cost

def gradient_descent(theta, X, y, alpha, num_iterations):
    m = len(y)
    cost_history = []
    
    for i in range(num_iterations):
        h = sigmoid(X.dot(theta))
        gradient = (1/m) * X.T.dot(h - y)
        theta = theta - alpha * gradient
        cost = cost_function(theta, X, y)
        cost_history.append(cost)
    
    return theta, cost_history

在这个例子中,我们使用梯度下降算法来最小化代价函数。我们需要选择合适的学习率(alpha)和迭代次数(num_iterations)来达到最优解。

接下来,我们初始化参数(theta)。

m, n = X.shape
X = np.hstack((np.ones((m, 1)), X))
theta = np.zeros(n + 1)

然后,我们可以调用gradient_descent函数来训练模型。

alpha = 0.01
num_iterations = 1000
theta_optimized, cost_history = gradient_descent(theta, X, y, alpha, num_iterations)

最后,我们可以使用训练得到的参数来进行预测。

def predict(theta, X):
    return sigmoid(X.dot(theta)) >= 0.5

predictions = predict(theta_optimized, X)

我们可以根据预测结果来评估模型的准确性。

accuracy = np.mean(predictions == y) * 100
print(f"Model accuracy: {accuracy}%")

这就是使用Sigmoid函数进行逻辑回归的基本步骤。通过这个例子,我们可以看到如何使用Python编程来实现逻辑回归算法,并使用Sigmoid函数进行概率预测。