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

使用Python实现的sigmoid函数及其在梯度下降算法中的应用

发布时间:2024-01-18 04:24:50

sigmoid函数是一种常用的激活函数,通常用来将一个连续的输入值映射到0和1之间的一个值。它的公式如下所示:

sigmoid(x) = 1 / (1 + exp(-x))

在Python中,可以使用math库的exp函数来计算x的指数,然后将结果通过其他操作计算得到sigmoid函数的值。下面是一个实现sigmoid函数的例子:

import math

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

接下来,让我们看看梯度下降算法中如何使用sigmoid函数。梯度下降算法是一种常用的优化算法,用于找到一个函数的最优解。下面是一个简单的使用sigmoid函数的梯度下降算法的例子,用于解决逻辑回归问题:

import numpy as np

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

def gradient_descent(X, y, learning_rate, num_iterations):
    n = X.shape[1]  # 特征数
    m = X.shape[0]  # 数据点数

    theta = np.zeros(n)  # 初始化参数

    for iteration in range(num_iterations):
        h = sigmoid(np.dot(X, theta))  # 计算预测值
        gradient = np.dot(X.T, (h - y)) / m  # 计算梯度
        theta = theta - learning_rate * gradient  # 更新参数

    return theta

在上面的代码中,X是特征矩阵,每一行表示一个数据点,每一列表示一个特征。y是一个向量,表示每个数据点的类别。learning_rate是学习率,表示参数更新的步长。num_iterations是迭代的次数。

下面是一个使用梯度下降算法解决逻辑回归问题的例子:

import numpy as np

# 生成一些随机数据
np.random.seed(0)
X = np.random.normal(size=(100, 2))
y = np.random.randint(0, 2, size=(100,))

# 添加一列常数特征
X = np.hstack((np.ones((100, 1)), X))

# 使用梯度下降算法拟合逻辑回归模型
theta = gradient_descent(X, y, learning_rate=0.01, num_iterations=1000)

# 打印最终学习到的参数
print(theta)

在上面的例子中,我们生成了一些随机数据,然后使用梯度下降算法来拟合一个逻辑回归模型。最终打印出了学习到的参数。

总结起来,sigmoid函数是一种常用的激活函数,它的实现很简单,可以使用Python的math库。在梯度下降算法中,sigmoid函数通常用于计算预测值和梯度,帮助模型逼近最优解。通过使用sigmoid函数和梯度下降算法,可以解决逻辑回归等问题。