Может ли график сигмовидной функции быть линейным?

#python #neural-network #kaggle #sigmoid

#python #нейронная сеть #kaggle #сигмоид

Вопрос:

Я думаю, что у меня «тупой» вопрос. У меня есть код 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
  

Что я получаю:

введите описание изображения здесь

Данные берутся из https://www.kaggle.com/azzion/credit-card-fraud-detection-using-neural-network

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

Ответ №1:

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

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

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

Ответ №2:

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

введите описание изображения здесь