Что означает объект «TypeError:« numpy.ndarray »не может быть вызван»? - PullRequest
0 голосов
/ 21 сентября 2019

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

Path = "housedata"
Name = "data.csv"
df = pd.read_csv(os.path.join(Path, Name))
df2 = df.apply(preprocessing.LabelEncoder().fit_transform)
df2 = df2.drop(columns=["date", "yr_renovated", "street", "city", "statezip", "country"])

predictors = df2.drop(columns=["price"])
target = df2["price"].values()
x_train, x_test, y_train, y_test = train_test_split(predictors, target, 
                                                    test_size=0.2, random_state=1)

model = LinearRegression()
model.fit(x_train, y_train)
print (regr.score(x_test, y_test))

Полная ошибка:

Traceback (most recent call last):
  File "housemodel.py", line 19, in <module>
    target = df2["price"].values()
TypeError: 'numpy.ndarray' object is not callable

У кого-нибудь есть решение?Спасибо.

Ответы [ 2 ]

1 голос
/ 21 сентября 2019

Скорее всего, df["price"].values возвращает numpy.ndarray, а затем () пытается вызвать массив (что не может произойти; могут быть вызваны только методы / функции).Бросьте ():

target = df2["price"].values
0 голосов
/ 21 сентября 2019

Всякий раз, когда вы получаете этот тип ошибки ... object is not callable.Это означает, что вы вызываете атрибут вместо метода

, чтобы объяснить его лучше.Рассмотрим этот пример.

class Person(object):
  """ Person class """

  def __init__(self, name, age):
    """ Initialize Person"""
    self.name = name
    self.age = age

  def getname(self):
    return self.name

  def getage(self):
    return self.age

  profession = 'Oncologist'


doctor1 = Person('Dr. Prabhaharan', 45)
# Gives correct output
print(doctor1.profession)

# Gives correct output
print(doctor1.getage())

# Gives a similar output which you got.
print(doctor1.profession())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...