に私はこのような推定を有する:計算の中間結果は、一度だけscikit学習GridSearchCV
from sklearn.base import BaseEstimator, TransformerMixin
import numpy as np
class customEstimator(BaseEstimator, TransformerMixin):
def __init__(self, estimator_var):
self.estimator_var = estimator_var
def transform(self, X):
self.tmpVar = np.random.randn(estimator_var, estimator_var)
return np.hstack((self.tmpVar, X)) # this is just an example
def fit(self, X, y=None):
return self
def get_params(self, deep=False):
return {'estimator_var': self.estimator_var, 'tmpVar': tmpVar}
を私はそれ(及びその他)で推定器とパイプラインを作成し、K倍ためGridSearchCVにそれを供給クロスバリデーション。 K-交差検定は次のようなものだ:
for all possible params combination:
for every fold split
compute score(mini_train, mini_test)
compute average score
pick best combination
問題は、パラメータの所定の組み合わせのために、私は一度だけ(計算するのが遅くなることがあります)
self.tmpVar
を計算したい、とのためにそれを使用する、ということです
同じパラメータの組み合わせを共有するすべての折り畳み分割。
scikit-learnで可能か、回避策はありますか?
ありがとうございます! 1つの質問:毎回__init__メソッドが呼び出されるので、私はそれらが異なる物理的オブジェクトであると考えます。しかし、私は、ScickitがGridSearchCVの同じパラメータセットで作業するときに、同じ名前の変数を__init__を呼び出すときに使用することを知っています。それは正しいでしょうか? – Bob
customEstimatorの各インスタンスは異なるオブジェクトですが、私の例では "tmpVars"は** static **です。つまり、すべてのインスタンスで共有されています。これはscikit-learnの機能ではなく、静的属性がどのプログラミング言語でも一般的にどのように機能するかです。もちろん、scikit-learnのクローニングを使用すると、同じ名前が取得され、同じ部分のメモリを取得できるようになります。 – lejlot