Pythonで次の関数を作成しました:
def cross_validate(algorithms, data, labels, cv=4, n_jobs=-1):
print "Cross validation using: "
for alg, predictors in algorithms:
print alg
print
# Compute the accuracy score for all the cross validation folds.
scores = cross_val_score(alg, data, labels, cv=cv, n_jobs=n_jobs)
# Take the mean of the scores (because we have one for each fold)
print scores
print("Cross validation mean score = " + str(scores.mean()))
name = re.split('\(', str(alg))
filename = str('%0.5f' %scores.mean()) + "_" + name[0] + ".pkl"
# We might use this another time
joblib.dump(alg, filename, compress=1, cache_size=1e9)
filenameL.append(filename)
try:
move(filename, "pkl")
except:
os.remove(filename)
print
return
相互検証を行うには、sklearn が関数に適合する必要があると考えました。
ただし、後で使用しようとすると(fは上記で保存したpklファイルですjoblib.dump(alg, filename, compress=1, cache_size=1e9))
:
alg = joblib.load(f)
predictions = alg.predict_proba(train_data[predictors]).astype(float)
最初の行ではエラーは発生しません (ロードが機能しているように見えます) が、次の行ではNotFittedError: Estimator not fitted, call
適切であることがわかりbefore exploiting the model.
ます。
私は何を間違っていますか?適合したモデルを再利用して交差検証を計算することはできませんか? scikits Learn で cross_val_score を使用する場合は適合パラメーターを保持するを見ましたが、答えが理解できないか、探しているものではありません。私が望むのは、モデル全体を joblib で保存して、後で再調整せずに使用できるようにすることです。