我刚刚试用了Sklearn python库,并重新编写了一些用于线性回归的代码,以适应回归树模型,这是我看到的一个示例(以下是示例代码):
def fit(self, X, y):
"""
Fit a Random Forest model to data `X` and targets `y`.
Parameters
----------
X : array-like
Input values.
y: array-like
Target values.
"""
self.X = X
self.y = y
self.n = self.X.shape[0]
self.model = ExtraTreesRegressor(**self.params)
self.model.fit(X, y)
以下是我编写/重新调整用途的代码
data = pd.read_csv("rmsearch.csv", sep=",")
data = data[["price", "type", "number_bedrooms"]]
predict = "price"
X = np.array(data.drop([predict], 1))
y = np.array(data[predict])
x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, test_size=0.2)
etr = ensemble.ExtraTreesRegressor
etr.fit(x_train, y_train)
acc = etr.score(x_test, y_test)
print("Accuracy; ", acc)
我得到了这个错误:
etr.fit(x_train, y_train)
TypeError: fit() missing 1 required positional argument: 'y'
我知道fit()将“X”、“y”和“sample\u weight”作为输入。但是,“样本权重”默认为“无”。其他示例对我帮助不大,但也可能是因为我对python相当陌生,无法发现简单的编码错误
fit()文档:
提前谢谢你的帮助
问题就在这里
在调用
fit
之前,需要实例化ensemble.ExtraTreesRegressor
。将此代码更改为您会得到一个看似奇怪的错误,
y
缺失,因为.fit
是一个实例方法,因此此函数的第一个参数实际上是self
。在实例上调用.fit
时,会自动传递self
。如果在类上调用.fit
(与实例相反),则必须提供self
。因此,您的代码相当于ensemble.ExtraTreesRegressor.fit(self=x_train, x=y_train)
有关差异的示例,请参见下面的示例。这两种形式在功能上是等效的,但您可以看到第一种形式很笨重
相关问题 更多 >
编程相关推荐