Может ли график сигмоидной функции быть линейным? - PullRequest
0 голосов
/ 22 апреля 2019

Я думаю, у меня есть "тупой" вопрос. У меня есть код Python, который вычисляет сигмовидную функцию:

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

Я хочу посмотреть, какой граф является сигмовидной функцией с заданными данными, поэтому я изменяю свою функцию следующим образом:

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

Итак, вопрос в том, может ли сигмовидная функция быть линейной с некоторыми конкретными параметрами или, может быть, я что-то не так делаю?

Ответы [ 2 ]

3 голосов
/ 22 апреля 2019

Нет, оно не может быть линейным. У меня нет вашего полного кода, но попробуйте

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

чтобы увидеть форму

2 голосов
/ 22 апреля 2019

То, что вы видите, является артефактом диапазона, в котором вы наносите сигмовидную карту. Рассмотрим следующие три диапазона для построения. Как вы увидите, первый сюжет выглядит более или менее линейным. Более того, вы планируете только сигмоид, когда вы делаете plt.plot(s). Поэтому в основном вы отбрасываете все отношения между s и z, когда делаете это. Вы должны построить как зависимые, так и независимые переменные как 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

...