【问题标题】:Python sklearn linear regression error: fit() missing 1 required positional argument: 'y'"Python sklearn 线性回归错误:fit() 缺少 1 个必需的位置参数:'y'"
【发布时间】:2021-04-28 19:42:49
【问题描述】:
我对 Python 和 scikit-learn 非常陌生。我在使用 scikit-learn 波士顿数据房价数据集时遇到了困难。请在下面找到我的代码。
谢谢!
import numpy as np
import pandas as pd
import scipy.stats as stats
import matplotlib.pyplot as plt
import sklearn
bos = pd.DataFrame(boston.data)
bos.head()
bos.columns = boston.feature_names
bos.head()
boston.target[:5]
bos['PRICE'] = boston.target
bos.head()
from sklearn.linear_model import LinearRegression
X = bos.drop('PRICE', axis = 1)
lm = LinearRegression
LinearRegression.fit
lm.fit(X,bos.PRICE)
TypeError Traceback (most recent call last)
<ipython-input-52-f9496290723b> in <module>
1 LinearRegression.fit
----> 2 lm.fit(X,bos.PRICE)
TypeError: fit() missing 1 required positional argument: 'y'
【问题讨论】:
标签:
python
pandas
numpy
scikit-learn
linear-regression
【解决方案1】:
您的lm = LinearRegression 缺少括号,因此未调用模型对象构造函数。此外,您没有正确拟合刚刚创建的模型。不需要LinearRegression.fit 行。
尝试以下方法,看看是否有帮助:
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.linear_model import LinearRegression
boston = datasets.load_boston() # loading boston dataset
bos = pd.DataFrame(boston.data) # creating dataframe from loaded data
bos.columns = boston.feature_names
bos['PRICE'] = boston.target
bos.head()
X = bos.drop('PRICE', axis = 1)
lm = LinearRegression() # initializing LinearRegression Model
lm.fit(X,bos.PRICE) # fitting data to our LinearRegression Model
【解决方案2】:
您应该使用lm = LinearRegression() 而不是lm = LinearRegression。
您可以使用lm.fit? 查看方法的签名。你会看到它是
Signature: lm.fit(self, X, y, sample_weight=None)
所以你的 X 被分配给 self,而 bos.PRICE 被分配给 X,它抱怨没有提供 y。在那里看到 self 应该会给你一个指示,表明调用了错误的方法。