後でバイナリ分類を行い、ラベルを予測するコードを実行しています。コードは、サイズが257673行、47列の1つの特定のデータベースで完全に実行されます。 91690行と10列の1つで試してみると、これは確かに小さいので、次のエラーコールが表示されます。
TerminatedWorkerError: A worker process managed by the executor was unexpectedly terminated. This could be caused by a segmentation fault while calling the function or by an excessive memory usage causing the Operating System to kill the worker. The exit codes of the workers are {SIGKILL(-9)}
cross validation
でn_job=-1
行を使用しています
cross_val_score(model, X.drop(target,axis=1), X[target], cv=outer_cv, n_jobs=-1, scoring='neg_mean_squared_error')
outer_cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=1)
model
はsklearnアルゴリズムのいずれかです。AdaBoostClassifier、LogisticRegression、KNN、SVM、GradientBoosting、RandomForest、DecisionTreeClassifierなどを試してみましたが、同じエラーが発生し続けます。
n_jobs=-2, 1, 2
を変更しようとしましたが、それでもエラーが解決しません。私はjupyterノートブックでコードを実行しており、私のラップトップには次のプロパティがあります。
Ubuntu 18.04.4 LTS
RAM: 15,5 Gb
Processor: Intel® Core™ i7-8550U CPU @ 1.80GHz × 8
この問題を解決するにはどうすればよいですか?
この質問に対する答えを見つけました。 scikit-learnアルゴリズムの一部は、カテゴリ特徴のエンコード方法に応じてこれらのエラーを生成するようです。私の場合、使用しているアルゴリズムのリストから削除する必要がありました:CategoricalNB()、Ridge()、ElasticNet()、GaussianProcessClassifier()。これらは、StandardScaler()またはMinMaxScaler()のいずれかでバグを生成していたためです。