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

Python编程:如何使用Sigmoid函数进行分类

发布时间:2023-12-11 04:51:05

在机器学习中,Sigmoid函数(也称为逻辑斯特函数)是一种常用的分类函数,它将输入映射到一个介于0和1之间的概率值。Sigmoid函数的公式如下:

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

其中,z表示输入的加权和,exp表示自然指数函数。

Sigmoid函数有以下特点:

- 输出范围在0到1之间,可以用作概率估计;

- 当z趋近于正无穷大时,Sigmoid函数的值趋近于1,当z趋近于负无穷大时,Sigmoid函数的值趋近于0;

- Sigmoid函数是单增的,即随着z的增大,其输出值也越大。

下面是一个使用Sigmoid函数进行二分类的例子:

import numpy as np
import matplotlib.pyplot as plt

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

# 生成一个包含两类数据的示例数据集
np.random.seed(0)
num_samples = 100
X = np.random.randn(num_samples, 2)
y = np.where(np.sum(X, axis=1) > 0, 1, 0)

# 可视化数据集
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.xlabel('X1')
plt.ylabel('X2')
plt.title('Data Distribution')
plt.show()

# 计算并可视化Sigmoid函数的输出值
z = np.linspace(-10, 10, 100)
sigmoid_output = sigmoid(z)

plt.plot(z, sigmoid_output)
plt.xlabel('z')
plt.ylabel('sigmoid(z)')
plt.title('Sigmoid Function')
plt.grid(True)
plt.show()

在上面的例子中,我们首先生成了一个包含两类数据的示例数据集,其中一个类的数据点位于原点的右上方,另一个类的数据点位于原点的左下方。然后,我们使用scatter函数将数据集可视化出来。

接下来,我们定义了一个Sigmoid函数,并生成一个从-10到10的一维数组z,用于计算Sigmoid函数的输出值。使用linspace函数生成z时,我们在指定范围内生成了100个等间距的数值。然后,我们计算Sigmoid函数的输出值,并使用plot函数进行可视化。

运行上述代码,你将会看到数据集的散点图,其中不同类别的数据点以不同的颜色表示。另外,你还会看到Sigmoid函数输出值的曲线图,其中随着z的增大,Sigmoid函数的输出值也越接近于1。根据Sigmoid函数的输出值,我们可以将数据点进行分类。

除了用于将输入映射到概率值的分类任务外,Sigmoid函数还常用于神经网络中的激活函数,以及逻辑回归等算法中。