13
votes

I have defined a regressor as follows:

nn1 = Regressor(
layers=[
    Layer("Rectifier", units=150),
    Layer("Rectifier", units=100),
    Layer("Linear")],
regularize="L2",
# dropout_rate=0.25,
learning_rate=0.01,
valid_size=0.1,
learning_rule="adagrad",
verbose=False,
weight_decay=0.00030,
n_stable=10,
f_stable=0.00010,
n_iter=200)

I am using this regressor in a k-fold cross-validation. In order for cross-validation to work properly and not learn from the previous folds, it's necessary that the regressor to be reset after each fold.
How can I reset the regressor object?

2

2 Answers

12
votes

sklearn.base.clone should achieve what you're looking to achieve

0
votes

The pattern that I use for cross validation instantiates a new classifier for each training/test pair:

from sklearn.cross_validation import KFold

kf = KFold(len(labels),n_folds=5, shuffle=True)
for train, test in kf:
    clf = YourClassifierClass()
    clf.fit(data[train],labels[train])
    # Do evaluation with data[test] and labels[test]

You can save your current best classifier in a separate variable and access its parameters after cross validation (this is also useful if you want to try different parameters).