我正在学习机器学习,并在进行波士顿房价预测任务。我有以下代码:
from sklearn.metrics import fbeta_score, make_scorer
from sklearn.model_selection import GridSearchCV
def fit_model(X, y):
""" 使用 GridSearchCV 在输入数据 X 和目标标签 y 上调整决策树回归模型的参数,并返回这个最优模型。 """
# 创建一个决策树回归器对象
regressor = DecisionTreeRegressor()
# 设置我们希望调整的参数
parameters = {'max_depth':(1,2,3,4,5,6,7,8,9,10)}
# 创建一个合适的评分函数
scoring_function = make_scorer(fbeta_score, beta=2)
# 创建 GridSearchCV 对象
reg = GridSearchCV(regressor, param_grid=parameters, scoring=scoring_function)
print reg
# 拟合学习器到数据上以获得参数调整后的最优模型
reg.fit(X, y)
# 返回最优模型
return reg.best_estimator_
reg = fit_model(housing_features, housing_prices)
这会引发 ValueError: continuous is not supported 错误,错误发生在 reg.fit(X, y) 这一行,我不明白为什么会这样。是什么原因导致的,我在这里遗漏了什么?
回答:
这是因为以下这行代码:
scoring_function = make_scorer(fbeta_score, beta=2)
这行代码将评分指标设置为 fbeta,这是一个用于分类任务的指标!
而你在这里进行的是回归任务,如下所示:
regressor = DecisionTreeRegressor()
根据文档: