【问题标题】:scikit-learn linear regression K fold cross validationscikit-learn 线性回归 K 折交叉验证
【发布时间】:2021-01-25 02:42:46
【问题描述】:

我想在我的训练数据上使用 sklearn 库运行线性回归和 K 折交叉验证,以获得最佳回归模型。然后,我计划使用在我的测试集上返回的平均误差最小的预测器。

例如,下面的代码为我提供了一个包含 20 个结果的数组,其中包含不同的负均值绝对误差,我有兴趣找到给我这个(最小)错误的预测器,然后在我的测试集上使用该预测器。

sklearn.model_selection.cross_val_score(LinearRegression(), trainx, trainy, scoring='neg_mean_absolute_error', cv=20)

【问题讨论】:

    标签: scikit-learn linear-regression k-fold


    【解决方案1】:

    cross_val_score 中没有“给我这个(最少)错误的预测器”之类的东西,所有估计器都在:

    sklearn.model_selection.cross_val_score(LinearRegression(), trainx, trainy, scoring='neg_mean_absolute_error', cv=20) 
    

    都是一样的。

    您可能希望检查GridSearchCV,它确实会搜索不同的超参数集并返回最佳估计器:

    from sklearn import datasets
    from sklearn.linear_model import LinearRegression
    from sklearn.model_selection import GridSearchCV
    X,y = datasets.make_regression()
    lr_model = LinearRegression()
    parameters = {'normalize':[True,False]}
    clf = GridSearchCV(lr_model, parameters, refit=True, cv=5)
    best_model = clf.fit(X,y)
    

    注意refit=True 参数,它确保最佳模型在整个数据集上重新拟合并返回。

    【讨论】:

    • parameters = {'normalize':[True,False]} 有什么作用?
    • 这是一个布尔值,告诉模型是否规范化数据。它是您的估算器唯一可能相关的参数。其他估算器将有更多参数来调整您的模型。
    猜你喜欢
    • 2013-05-03
    • 2017-01-11
    • 2020-04-06
    • 2018-04-02
    • 2018-12-04
    • 2014-07-30
    • 2012-01-07
    • 2015-07-07
    • 2017-03-30
    相关资源
    最近更新 更多