Scikit-Learn Grid Search продолжает работать с ошибками при использовании Dask Parallel Backend - PullRequest
0 голосов
/ 06 апреля 2020

Я выполняю поиск по сетке для настройки параметров модели. Работает при использовании n_jobs=-1 без бэкэнда dask. Но когда я переключаюсь на dask, я получаю следующую ошибку:

ValueError: X has 205995 features per sample; expecting 205809

Кто-нибудь знает, что является причиной этой проблемы? Следует ли понизить кластерный кластер до более старой версии python, например Python 3.6?

Пример кода:

vec_transformer = FeatureUnion([
                ('word_name', 
                  Pipeline([
                            ('tfidf', 
                              TfidfVectorizer(sublinear_tf=False,
                                            smooth_idf=False,
                                            use_idf=1,
                                            min_df=2,
                                            preprocessor=text_processor,
                                            analyzer='char_wb',
                                            token_pattern=r'\S+',
                                            ngram_range=(2,10),
                                            dtype=np.float32))]))
]) 

pipeline = Pipeline([
    ('vectorizer', vec_transformer), 
    ('model', LogisticRegression())
])

param_grid = {
              'model__C': [8, 10],
              'model__penalty': ['l2'],
              'model__solver': ['lbfgs', 'newton-cg'],
              'model__intercept_scaling': [1],
              'model__class_weight': [None],
              'model__dual': [False],
              'model__tol': [0.0001, 0.001, 0.01],
              'model__fit_intercept': [True]
             }

clf = GridSearchCV(pipeline, 
                           param_grid, 
                           verbose=8, 
                           cv=StratifiedKFold(n_splits=3, shuffle=True),  
                           scoring='accuracy',
                           refit=True,
                           n_jobs=-1)

print("Performing grid search...")
print("pipeline:", [name for name, _ in pipeline.steps])
print("parameters:")
print(param_grid)
with joblib.parallel_backend('dask'):
    clf.fit(X_train, y_train)
...