我正在使用GridSearchCV
根据PolynomialFeature
返回的 MSE 找到最佳的LinearRegression()
度。
在GridSearchCV
之前,我首先使用了一个循环,当 MSE > 10K时该循环已停止。
为了节省时间,如何使用GridSearchCV()
实现相同类型的“退出循环” ?
skf2 = StratifiedShuffleSplit(n_splits=4, train_size = 0.8,random_state =63)
start = time.time()
poly_linear = Pipeline([('poly', PolynomialFeatures()),
('Linear', LinearRegression(fit_intercept =False))])
parameters = {'poly__degree': [1,2,3,4,5]}
grid_search_lin = GridSearchCV(poly_linear, parameters, cv=skf2, n_jobs=-1, scoring='mean_squared_error').fit(X_l, Y_l)
print('timer',time.time() - start,'s')
答案 0 :(得分:0)
GridSearchCV
是穷举搜索,也就是说,它会考虑全部个给定的参数([1,2,3,4,5]
。我不知道使用GridSearchCV的退出循环的可能性。
如果时间很成问题,则可以(1)减少参数网格的空间,(2)减少cv迭代次数(由n_splits
中的skf2
管理),(3)使用{ {1}}从网格中随机选择参数。就模型选择质量而言,这都不是一个好的选择,但是无论如何它将花费更少的时间。
此外,不确定为什么您不适合使用拦截器。除非有特定原因,否则最好将截距与回归拟合,因为这样可以减少模型偏差。
希望这会有所帮助