Ошибка типа: неподдерживаемый тип (ы) операнда для *: ‘int’ и ‘builtin_function_or_method’ при попытке умножить несколько переменных с помощью numpy

#python #numpy #typeerror #python-3.8

#питон #тупой #ошибка типа #python-3.8

Вопрос:

Я пытаюсь построить простую линейную регрессию, используя numpy и seaborn. Однако я не могу заставить умножение работать для моей y переменной. Ошибка, которую я получаю, заключается в следующем:

Ошибка типа: неподдерживаемые типы операндов для *: ‘int’ и ‘builtin_function_or_method’

Я пытался передать параметры в int() функции, но все еще не смог решить проблему.

Код выглядит следующим образом:

 import numPy as np
import matplotlib.pyplot as plt
import seaborn as sns


np.random.seed(123)
N = 20
beta0 = -4
beta1 = 2
x = np.random.randn(N)
e = np.random.randn(N)
y = beta0   beta1 * x   e
true_x = np.linspace(min(x), max(x), 100)
true_y = beta0   beta1*true_x


fig, ax = plt.subplots()
sns.scatterplot(x, y, s = 40, label = 'Data')
sns.lineplot(true_x, true_y, color = 'red', label = 'True Model')
ax.set_xlabel('x', fontsize = 14)
ax.set_title(fr"$y = {beta0}   ${beta1}$x   epsilon$", fontsize = 16)
ax.set_ylabel('y', fontsize=14, rotation=0, labelpad=10)
ax.legend(loc = 4)
sns.despine()
plt.show()
 

Комментарии:

1. Измените np.random.randn на np.random.randn() . В данный момент вы не вызываете его, а просто присваиваете ему значение x и e , что явно не сработает.

2. Пожалуйста, отследите. Или, по крайней мере, покажите проблемную строку! Ошибка указывает, что 2-й аргумент является функцией, а не вычисляемым массивом.

3. @TomKarzes большое вам спасибо. Я обновил код и вставил N внутрь () и добавил plt.show() . Все работает нормально. Пожалуйста, добавьте свой комментарий в качестве ответа, и я отмечу его как правильный ответ.