Как я могу построить график числовой функции, используя Python и Matplotlib? - PullRequest
0 голосов
/ 02 мая 2019

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

Я пытался напрямую построить следующую функцию:

def Sigmoid(x):
  a=[]
  for i in x:
    a.append(1/(1+math.exp(-i)))
  return a

, используякоманда plt.plot(Sigmoid).Но это дало мне ошибку:

TypeError: аргумент float () должен быть строкой или числом, а не «функцией»

Конечный результат должен выглядеть примерно такэто:

1

Ответы [ 2 ]

1 голос
/ 02 мая 2019

Sigmoid является функцией, Matplotlib ожидает числовые значения, то есть результаты оценки функции, например,

x = [i/50 - 1 for i in range(101)]
plt.plot(x, Sigmoid(x))

Тем не менее, вы, вероятно, хотите ознакомиться с Numpy библиотекой

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1, 1, 101)
plt.plot(x, 1/(1+np.exp(-x))
1 голос
/ 02 мая 2019
import numpy as np
import matplotlib.pyplot as plt

def sigmoid(arr, scale=1):
    arr = np.asarray(arr)
    result = 1/(1 + np.exp(-arr*scale))
    return result

x = np.linspace(-5, 5)
y = sigmoid(x)

fig, ax = plt.subplots()
ax.plot(x, y)

Результат:

enter image description here

Метод ax.plot использует пару одномерных массивов, имеющих одинаковую длину, для создания линий. Matplotlib не похож на Mathematica, в которой вы можете дать аналитическую функцию и область ее аргументов. Вы должны дать (в этом случае) пары x-y (или, точнее, списки / массивы, которые можно превратить в пары x-y). И в этом случае порядок имеет значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...