Python Sklearn线性回归不可调用
我正在使用pandas和sklearn实现简单线性回归和多元线性回归 我的代码如下Python Sklearn线性回归不可调用,python,numpy,scikit-learn,regression,sklearn-pandas,Python,Numpy,Scikit Learn,Regression,Sklearn Pandas,我正在使用pandas和sklearn实现简单线性回归和多元线性回归 我的代码如下 import pandas as pd import numpy as np import scipy.stats from sklearn import linear_model from sklearn.metrics import r2_score df = pd.read_csv("Auto.csv", na_values='?').dropna() lr = linear_model.LinearRe
import pandas as pd
import numpy as np
import scipy.stats
from sklearn import linear_model
from sklearn.metrics import r2_score
df = pd.read_csv("Auto.csv", na_values='?').dropna()
lr = linear_model.LinearRegression()
y = df['mpg']
x = df['displacement']
X = x.values.reshape(-1,1)
sklearn_model = lr.fit(X,y)
这很好,但对于多重线性回归,由于某种原因,它不适用于sklearn线性回归末尾的(),当我将其与括号一起使用时,会出现以下错误:
TypeError: 'LinearRegression' object is not callable
我的多元线性回归代码如下:
lr = linear_model.LinearRegression
feature_1 = np.array(df[['displacement']])
feature_2 = np.array(df[['weight']])
feature_1 = feature_1.reshape(len(feature_1),1)
feature_2 = feature_2.reshape(len(feature_2),1)
X = np.hstack([feature_1,feature_2])
sklearn_mlr = lr(X,df['mpg'])
from sklearn.linear_model import LinearRegression
我想知道我做错了什么。此外,如果在最后不使用()的话,我无法打印线性回归方法中的各种属性。e、 g
print(sklearn_mlr.coef_)
给我一个错误:
AttributeError: 'LinearRegression' object has no attribute 'coef_'
lr
在您的示例中是一个类
您需要初始化它,然后从实例中调用.fit(X,df['mpg'])
。给定以下代码片段:
lr = linear_model.LinearRegression
feature_1 = np.array(df[['displacement']])
feature_2 = np.array(df[['weight']])
feature_1 = feature_1.reshape(len(feature_1),1)
feature_2 = feature_2.reshape(len(feature_2),1)
X = np.hstack([feature_1,feature_2])
sklearn_mlr = lr(X,df['mpg'])
您的问题是尚未初始化LinearRegression类的实例。您需要像在第一个示例中那样初始化它。然后您可以使用fit
方法,如下所示:
lr = linear_model.LinearRegression()
feature_1 = np.array(df[['displacement']])
feature_2 = np.array(df[['weight']])
feature_1 = feature_1.reshape(len(feature_1),1)
feature_2 = feature_2.reshape(len(feature_2),1)
X = np.hstack([feature_1,feature_2])
sklearn_mlr = lr.fit(X,df['mpg'])
一旦一个实例适合,它将具有文档中列出的属性(例如
.coef\uu
)。既然您试图访问LogisticRegression类本身的.coef
。为什么不按如下方式导入它:
lr = linear_model.LinearRegression
feature_1 = np.array(df[['displacement']])
feature_2 = np.array(df[['weight']])
feature_1 = feature_1.reshape(len(feature_1),1)
feature_2 = feature_2.reshape(len(feature_2),1)
X = np.hstack([feature_1,feature_2])
sklearn_mlr = lr(X,df['mpg'])
from sklearn.linear_model import LinearRegression
在我看来,这比你做的要干净得多。然后您可以这样使用它:
lr = LinearRegression()
我无法复制这个。我怀疑你在什么地方做了
linear\u model.LinearRegression=linear\u model.LinearRegression()
,这会重现这个错误……你知道()
是如何工作的吗?为什么上面的代码有效?