S形函数图可以是线性的吗?

问题描述 投票:0回答:2

我想我有一个“愚蠢”的问题。我有一个python代码,可以计算sigmoid函数:

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

我想看看给定数据的sigmoid函数是什么类型的图,所以我将我的函数更改为:

def sigmoid(z):
    s = 1 / (1 + np.exp(-z))
    plt.plot(s)
    plt.title("Sigmoid")
    plt.show()
    return s

我得到的是:

enter image description here

数据来自https://www.kaggle.com/azzion/credit-card-fraud-detection-using-neural-network

所以问题是:sigmoid函数是否可以与某些特定参数呈线性关系,或者我可能做错了什么?

python neural-network kaggle sigmoid
2个回答
2
投票

你看到的是你正在绘制sigmoid的范围的人工制品。考虑以下三个绘图范围。正如您将看到的,第一个图看起来或多或少是线性的。此外,当你做plt.plot(s)时,你只绘制sigmoid。所以基本上你扔掉了sz之间的所有关系。您应该将依赖变量和自变量绘制为ax.plot(z, s)

fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(14, 3))

z1 = np.linspace(0, 1, 100)
z2 = np.linspace(-5, 5, 100)
z3 = np.linspace(-50, 50, 100)

def sigmoid(z, ax):
    s = 1 / (1 + np.exp(-z))
    ax.plot(z, s)
    ax.set_title("Sigmoid")
    return 

for ax, z in zip(axes.flatten(), [z1, z2, z3]):
    sigmoid(z, ax)
plt.tight_layout()    

enter image description here


3
投票

不,它不能是线性的。我没有完整的代码,但请尝试

 x = np.linspace(-3, 3)
 y = sigmoid(x)
 plt.plot(x, y)

看到形状

© www.soinside.com 2019 - 2024. All rights reserved.