Уменьшение переменной при вызове метода в python - PullRequest
0 голосов
/ 27 мая 2020

Я использую sklearn для выполнения линейной регрессии. Если я сделаю

reg = LinearRegression()
reg.fit(x_matrix, y)

, он будет работать нормально. Чтобы уменьшить код, удалив переменную reg, я делаю

LinearRegression.reg.fit(x_matrix, y)

, это дает мне ошибку. Объясните, пожалуйста, разницу.

Python версия 3.7.6

Ответы [ 4 ]

3 голосов
/ 27 мая 2020
reg = LinearRegression()
reg.fit(x_matrix, y)

Как и в математическом уравнении, вы можете заменить фактическое значение переменной reg (LinearRegression())

Это приведет к LinearRegression().fit(x_matrix, y)

3 голосов
/ 27 мая 2020

Вы пропустили круглые скобки после LinearRegression и получили лишнюю reg, которой здесь нет. Используйте:

LinearRegression().fit(x_matrix, y)
1 голос
/ 27 мая 2020

Проблема с вашим кодом в том, что вы забыли скобки для создания нового объекта. Тогда вам не нужно назначать имя, а использовать объект немедленно.

Вместо этого краткая форма должна выглядеть так:

LinearRegression().fit(x_matrix, y)

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

0 голосов
/ 27 мая 2020

Общее различие заключается в том, что в первом случае вы создаете объект класса перед вызовом функции класса. Во втором случае вы пытаетесь напрямую использовать функцию класса, не создавая сначала объект класса. Это разрешено, только если у вас есть функция, определенная как @ staticmethod.

...