【发布时间】:2018-06-25 17:09:45
【问题描述】:
我正在使用 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.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'])
我想知道我做错了什么。此外,如果最后不使用 (),我将无法在线性回归方法中打印各种属性。例如
print(sklearn_mlr.coef_)
给我错误:
AttributeError: 'LinearRegression' object has no attribute 'coef_'
【问题讨论】:
-
我无法重现此内容。我怀疑在某处,您已经完成了
linear_model.LinearRegression = linear_model.LinearRegression(),这会重现此错误... -
您了解
()的工作原理吗?为什么上面的代码有效?
标签: python numpy scikit-learn regression sklearn-pandas