[英]Use Sklearn to and Polynomial Regression to fit/predict equation of a curve. Infinite loop error
[英]how to properly use sklearn to predict the error of a fit
我正在使用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
是否有更快的方法?
您可能想在训练数据集上验证模型。 我建议探索交叉验证子模块sklearn.cross_validation
。
最基本的用法是:
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y)
这取决于您的训练数据-如果其分布可以很好地表示“现实世界”并且具有足够的大小(请参阅学习理论,如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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.