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

通过Python编写的sigmoid函数的代码示例和使用案例

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

sigmoid函数是一种常用的激活函数,用于神经网络中处理二分类问题。它的输出范围在0和1之间,可以将任意实数映射为0到1之间的数值。sigmoid函数的公式如下:

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

下面是通过Python编写的sigmoid函数的代码示例:

import numpy as np

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

使用案例:

# 导入库
import matplotlib.pyplot as plt
import numpy as np

# 定义sigmoid函数
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

# 生成一组实数数据
x = np.linspace(-10, 10, 100)
y = sigmoid(x)

# 绘制sigmoid函数曲线
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('sigmoid(x)')
plt.title('Sigmoid Function')
plt.grid(True)
plt.show()

在上面的代码中,我们使用numpy库生成了一组实数数据x,并根据这些数据计算了对应的sigmoid函数值y。然后我们使用matplotlib库绘制了sigmoid函数的曲线。运行代码后,我们可以看到sigmoid函数曲线在x为负无穷大时趋于0,在x为正无穷大时趋于1,中间曲线逐渐变化平滑。

除了绘制sigmoid函数的曲线外,sigmoid函数还可以用于二分类问题的概率预测。例如,在一个二分类问题中,我们使用一个线性回归模型对数据进行拟合,然后使用sigmoid函数将拟合结果映射为概率值。由于sigmoid函数的输出范围在0和1之间,可以将其解释为分类的概率。

下面是使用sigmoid函数进行二分类概率预测的例子:

# 导入库
import numpy as np

# 定义sigmoid函数
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

# 使用线性回归模型进行拟合
X = np.array([[1, 2], [3, 4], [5, 6]])
y = np.array([0, 1, 0])

# 添加偏置项
X = np.c_[np.ones((X.shape[0], 1)), X]

# 初始化参数
theta = np.zeros(X.shape[1])

# 定义损失函数和梯度函数
def loss_function(theta, X, y):
    h = sigmoid(X.dot(theta))
    return -np.mean(y * np.log(h) + (1 - y) * np.log(1 - h))

def gradient_function(theta, X, y):
    h = sigmoid(X.dot(theta))
    return X.T.dot(h - y) / len(y)

# 使用梯度下降法进行参数优化
learning_rate = 0.01
max_iterations = 1000

for i in range(max_iterations):
    gradient = gradient_function(theta, X, y)
    theta = theta - learning_rate * gradient

# 使用训练好的参数对新数据进行预测
new_X = np.array([[7, 8], [9, 10]])
new_X = np.c_[np.ones((new_X.shape[0], 1)), new_X]
y_pred = sigmoid(new_X.dot(theta))

print(y_pred)

在上面的代码中,我们使用numpy库生成了一个简单的二分类样本数据集,并使用线性回归模型进行拟合。然后,我们使用sigmoid函数将拟合结果映射为概率值。最后,我们使用训练好的参数对新数据进行预测,并打印预测结果。

以上就是通过Python编写sigmoid函数的代码示例和使用案例。