我有一个数据集,以前分为3组:训练,验证和测试.必须使用这些集合以便比较不同算法的性能.
我现在想使用验证集优化我的SVM的参数.但是,我无法找到如何明确输入验证集sklearn.grid_search.GridSearchCV().下面是我之前用于在训练集上进行K折叠交叉验证的一些代码.但是,对于这个问题,我需要使用给定的验证集.我怎样才能做到这一点?
from sklearn import svm, cross_validation
from sklearn.grid_search import GridSearchCV
# (some code left out to simplify things)
skf = cross_validation.StratifiedKFold(y_train, n_folds=5, shuffle = True)
clf = GridSearchCV(svm.SVC(tol=0.005, cache_size=6000,
class_weight=penalty_weights),
param_grid=tuned_parameters,
n_jobs=2,
pre_dispatch="n_jobs",
cv=skf,
scoring=scorer)
clf.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud) 我搜索了sklearn文档 TimeSeriesSplit和交叉验证文档,但我找不到一个有效的例子.
我正在使用sklearn版本0.19.
这是我的设置
import xgboost as xgb
from sklearn.model_selection import TimeSeriesSplit
from sklearn.grid_search import GridSearchCV
import numpy as np
X = np.array([[4, 5, 6, 1, 0, 2], [3.1, 3.5, 1.0, 2.1, 8.3, 1.1]]).T
y = np.array([1, 6, 7, 1, 2, 3])
tscv = TimeSeriesSplit(n_splits=2)
for train, test in tscv.split(X):
print(train, test)
Run Code Online (Sandbox Code Playgroud)
得到:
[0 1] [2 3]
[0 1 2 3] [4 5]
Run Code Online (Sandbox Code Playgroud)
如果我尝试:
model = xgb.XGBRegressor()
param_search = {'max_depth' : [3, 5]}
my_cv = TimeSeriesSplit(n_splits=2).split(X) …Run Code Online (Sandbox Code Playgroud) 我正在尝试为SVR模型获取最佳参数集.我想使用GridSearchCV超过不同的值C.但是,从之前的测试中我发现,分成训练/测试集高可影响整体表现(在这种情况下为r2).为了解决这个问题,我想实现重复的5倍交叉验证(10 x 5CV).是否有内置的方式来执行它GridSearchCV?
快速解决方案:
遵循sci-kit 官方文档中提出的想法,快速解决方案代表:
NUM_TRIALS = 10
scores = []
for i in range(NUM_TRIALS):
cv = KFold(n_splits=5, shuffle=True, random_state=i)
clf = GridSearchCV(estimator=svr, param_grid=p_grid, cv=cv)
scores.append(clf.best_score_)
print "Average Score: {0} STD: {1}".format(numpy.mean(scores), numpy.std(scores))
Run Code Online (Sandbox Code Playgroud) 我需要通过属性将数据框随机分成两个不相交的集合'ids'.例如,请考虑以下数据框:
df=
Out[470]:
0 1 2 3 ids
0 17.0 18.0 16.0 15.0 13.0
1 18.0 16.0 15.0 15.0 13.0
2 16.0 15.0 15.0 16.0 13.0
131 12.0 8.0 21.0 19.0 14.0
132 8.0 21.0 19.0 20.0 14.0
133 21.0 19.0 20.0 9.0 14.0
248 NaN NaN 12.0 11.0 17.0
249 NaN 12.0 11.0 10.0 17.0
250 12.0 11.0 10.0 NaN 17.0
287 3.0 3.0 1.0 8.0 20.0
288 3.0 1.0 8.0 3.0 20.0
289 1.0 8.0 3.0 …Run Code Online (Sandbox Code Playgroud)