Я выполняю поиск по сетке для настройки параметров модели. Работает при использовании 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)