- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 XGBoost 上使用 scikit-learn 的 GridSearchCV 进行超参数搜索。在网格搜索期间,我希望它尽早停止,因为它大大减少了搜索时间并且(期望)在我的预测/回归任务上获得更好的结果。我通过其 Scikit-Learn API 使用 XGBoost。
model = xgb.XGBRegressor()
GridSearchCV(model, paramGrid, verbose=verbose ,fit_params={'early_stopping_rounds':42}, cv=TimeSeriesSplit(n_splits=cv).get_n_splits([trainX, trainY]), n_jobs=n_jobs, iid=iid).fit(trainX,trainY)
/opt/anaconda/anaconda3/lib/python3.5/site-packages/xgboost/callback.py in callback(env=XGBoostCallbackEnv(model=<xgboost.core.Booster o...teration=4000, rank=0, evaluation_result_list=[]))
187 else:
188 assert env.cvfolds is not None
189
190 def callback(env):
191 """internal function"""
--> 192 score = env.evaluation_result_list[-1][1]
score = undefined
env.evaluation_result_list = []
193 if len(state) == 0:
194 init(env)
195 best_score = state['best_score']
196 best_iteration = state['best_iteration']
最佳答案
这是一个在带有 GridSearchCV 的管道中工作的解决方案。当您拥有预处理训练数据所需的管道时,就会出现挑战。例如,当 X 是文本文档时,您需要 TFTDFVectorizer 对其进行矢量化。
覆盖 XGBRegressor 或 XGBClssifier.fit() 函数
from xgboost.sklearn import XGBRegressor
from sklearn.model_selection import train_test_split
class XGBRegressor_ES(XGBRegressor):
def fit(self, X, y, *, eval_test_size=None, **kwargs):
if eval_test_size is not None:
params = super(XGBRegressor, self).get_xgb_params()
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=eval_test_size, random_state=params['random_state'])
eval_set = [(X_test, y_test)]
# Could add (X_train, y_train) to eval_set
# to get .eval_results() for both train and test
#eval_set = [(X_train, y_train),(X_test, y_test)]
kwargs['eval_set'] = eval_set
return super(XGBRegressor_ES, self).fit(X_train, y_train, **kwargs)
示例用法
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.feature_selection import VarianceThreshold
from sklearn.preprocessing import StandardScaler
from sklearn.feature_selection import SelectPercentile, f_regression
xgbr_pipe = Pipeline(steps=[('tfidf', TfidfVectorizer()),
('vt',VarianceThreshold()),
('scaler', StandardScaler()),
('Sp', SelectPercentile()),
('xgbr',XGBRegressor_ES(n_estimators=2000,
objective='reg:squarederror',
eval_metric='mae',
learning_rate=0.0001,
random_state=7)) ])
X_train = train_idxs['f_text'].values
y_train = train_idxs['Pct_Change_20'].values
安装管道示例:
%time xgbr_pipe.fit(X_train, y_train,
xgbr__eval_test_size=200,
xgbr__eval_metric='mae',
xgbr__early_stopping_rounds=75)
示例拟合 GridSearchCV:
learning_rate = [0.0001, 0.001, 0.01, 0.05, 0.1, 0.2, 0.3]
param_grid = dict(xgbr__learning_rate=learning_rate)
grid_search = GridSearchCV(xgbr_pipe, param_grid, scoring="neg_mean_absolute_error", n_jobs=-1, cv=10)
grid_result = grid_search.fit(X_train, y_train,
xgbr__eval_test_size=200,
xgbr__eval_metric='mae',
xgbr__early_stopping_rounds=75)
关于python-3.x - GridSearchCV - XGBoost - 提前停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42993550/
考虑以下网格搜索: grid = GridSearchCV(clf, parameters, n_jobs =-1, iid=True, cv =5) grid_fit = grid.fit(X_tr
我正在做一个 GridSearchCV,我已经监控了核心的百分比,并且我看到当我运行一个简单的神经网络时,4 个核心具有相同的百分比,但是当网格搜索 cv (n_jobs = 1) 开始时在情节的线条
我在带有 RBF 内核的 SVM 上进行了网格搜索 + 交叉验证,以使用类 GridShearchCV 找到参数 C 和 gamma 的最佳值。现在我想以表格格式获得结果,例如 C/gamma 1e-
我正在尝试为 sklearn 的 GridSearchCV 结果生成热图。我喜欢的东西sklearn-evaluation是因为生成热图真的很容易。但是,我遇到了一个问题。当我将参数设为 None 时
我想提高这个的参数GridSearchCV 对于 随机森林回归器 . def Grid_Search_CV_RFR(X_train, y_train): from sklearn.model_
我正在尝试设置 GridSearchCV 的实例来确定哪一组超参数将产生最低的平均绝对误差。 This scikit documentation表示分数指标可以在创建 GridSearchCV 时传递
当使用网格搜索在 python 中使用此函数 GridSearchCV() 进行分类器时,假设我们有一个参数区间来调整形式 1 到 100,我们如何能够指定它(1:100 不起作用)? p> 最佳答案
我是机器学习的新手,并且一直坚持这个。 当我尝试在线性模型中实现多项式回归时,例如使用多个次数的多项式范围(1,10)并获得不同的 MSE。我实际上使用 GridsearchCV 方法来查找多项式的最
我想在一系列 alpha(拉普拉斯平滑参数)上使用 GridSearchCV 来检查哪个为伯努利朴素贝叶斯模型提供了最佳准确度。 def binarize_pixels(data, threshold
使用 sklearn 在随机森林分类器上运行网格搜索。这个运行的时间比我想象的要长,我正在尝试估计这个过程还剩多少时间。我认为它的总拟合次数是 3*3*3*3*5 = 405。 clf = Rando
我正在尝试使用网格搜索找出要在 PCA 中使用的 n_components 的最佳值: from sklearn.decomposition import PCA from sklearn.grid_
我正在尝试 GridsearchCV 但我希望在 param grid 中有一些异常(exception)。这是我的网格搜索代码: from sklearn.model_selection impor
我很难找出 GridSearchCV 中的参数 return_train_score。来自docs : return_train_score : boolean, optional If
我必须进行多类分类 (3)。我使用 GridSearchCV 为我的分类器搜索最佳参数。 但我有一个不平衡的 x_train(和 x_test):0 有 3079 个实例,1 有 12 个实例,3 有
有没有办法访问在 GridSearchCV 过程中计算的预测值? 我希望能够根据实际值(来自测试/验证集)绘制预测的 y 值。 网格搜索完成后,我可以使用 将其与其他一些数据相匹配 ypred =
我正在使用GridsearchCV来调整超参数,现在我想在训练和验证步骤中进行最小-最大Normalization(StandardScaler())。但我认为我不能做到这一点。 问题是: 如果我对整
我正在使用 scikit learn 进行多标签分类。我使用 RandomForestClassifier 作为基本估计器。我想使用 GridSearchCV 优化每个标签的参数。目前我正在按以下方式
好的,我只想说,我对 SciKit-Learn 和数据科学完全陌生。但这是问题所在,也是我目前对该问题的研究。代码在底部。 总结 我正尝试使用 BernoulliRBM 进行类型识别(例如数字),并尝
我正在使用 GridSearchCV ,并且在每次迭代之后,我想将 clf.cv_results_ 属性保存到一个文件中(以防进程在中间崩溃)。 我尝试寻找解决方案,但就是想不通。 我们将不胜感激。
我正在尝试自学如何在基本的多层神经网络中对神经元的数量进行网格搜索。我正在使用 Python 的 GridSearchCV 和 KerasClasifier 以及 Keras。下面的代码适用于其他数据
我是一名优秀的程序员,十分优秀!