我正在使用sklearn进行线性回归。如果我这样做
reg = LinearRegression()
reg.fit(x_matrix, y)
效果很好。为了通过删除变量reg减少代码,我可以
LinearRegression.reg.fit(x_matrix, y)
这给我一个错误。请说明不同之处。
Python版本3.7.6
您错过了LinearRegression
之后的括号,并有一个不属于此的额外reg
。使用:
LinearRegression().fit(x_matrix, y)
reg = LinearRegression()
reg.fit(x_matrix, y)
类似于数学方程式,您可以将变量reg
替换为其实际值(LinearRegression()
)
这样做将导致LinearRegression().fit(x_matrix, y)
代码的问题是您忘记了创建新对象的括号。然后,您无需分配名称即可立即使用该对象。
相反,简短形式必须看起来像这样:
LinearRegression().fit(x_matrix, y)
这将创建类型为LinearRegression的对象,然后将使用该对象。这可能只是一个拼写错误或复制粘贴错误,尽管如果您不确定对象和类型之间的区别是什么,则应该查找一下,这也是python和许多其他语言的基础知识。
一般的区别是,在第一个实例中,您是在调用类的函数之前创建类的对象。在第二种情况下,您尝试直接使用类的功能,而不先创建类的对象。仅当您将函数定义为@staticmethod时,才允许使用此方法。