【问题标题】:how to properly use sklearn to predict the error of a fit如何正确使用 sklearn 预测拟合误差
【发布时间】:2016-02-06 21:08:12
【问题描述】:

我正在使用sklearn 将线性回归模型拟合到某些数据。特别是,我的响应变量存储在数组y 中,我的特征存储在矩阵X 中。

我用以下代码训练了一个线性回归模型

    from sklearn.linear_model import LinearRegression
    model = LinearRegression()
    model.fit(X,y)

一切似乎都很好。

然后假设我有一些新数据X_new,我想预测它们的响应变量。这可以通过以下方式轻松完成

    predictions = model.predict(X_new)

我的问题是,与此预测相关的错误是什么? 根据我的理解,我应该计算模型的均方误差:

    from sklearn.metrics import mean_squared_error
    model_mse = mean_squared_error(model.predict(X),y)

基本上我对新数据的真实预测应该是一个从高斯分布计算的随机数,平均值为predictions 和 sigma^2 = model_mse。您是否同意这一点,您是否知道sklearn 中是否有更快的方法?

【问题讨论】:

  • 我不同意。你不同意真正的预测是predictions 自己吗?该模型的性能是通过比较在X_new 上做出的预测与其对应的已知目标y_new 进行比较来计算的。
  • 注:您还可以通过运行 model.score(X_new, y_new) 来计算 R 平方分数。
  • 我同意你的观点,我确实计算了 R 平方分数来选择我最好的模型。问题是,一旦你提出了最好的线性模型,你就必须将错误与你的预测联系起来。
  • 啊,我明白你的意思了

标签: python scikit-learn regression


【解决方案1】:

您可能希望在训练数据集上验证您的模型。我建议探索交叉验证子模块sklearn.cross_validation

最基本的用法是:

from sklearn.cross_validation import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y)

【讨论】:

  • 谢谢,我已经这样做了。问题是在我验证模型并选择最佳拟合参数后,与预测相关的错误是什么?
【解决方案2】:

这取决于您的训练数据- 如果它的分布很好地代表了“现实世界”并且足够大(参见学习理论,如PAC),那么我通常会同意。

也就是说,如果您正在寻找一种实用的方法来评估您的模型,为什么不使用 Kris 建议的测试集呢? 我通常使用网格搜索来优化参数:

#split to training and test sets
X_train, X_test, y_train, y_test =train_test_split(
X_data[indices], y_data[indices], test_size=0.25)

#cross validation gridsearch 
params = dict(logistic__C=[0.1,0.3,1,3, 10,30, 100])
grid_search = GridSearchCV(clf, param_grid=params,cv=5)
grid_search.fit(X_train, y_train)

#print scores and best estimator
print 'best param: ', grid_search.best_params_ 
print 'best train score: ', grid_search.best_score_
print 'Test score: ', grid_search.best_estimator_.score(X_test,y_test)

这个想法是对你的学习算法(和你自己)隐藏测试集——不要使用这些数据训练和优化参数。

最后,您应该只将测试集用于性能评估(错误),它应该提供无偏见的 mse。

【讨论】:

    猜你喜欢
    • 2020-04-15
    • 2019-03-28
    • 2017-07-04
    • 2019-08-12
    • 2019-01-19
    • 2018-11-18
    • 1970-01-01
    • 2016-11-01
    • 2023-04-03
    相关资源
    最近更新 更多