Ошибка с функцией подгонки CalibratedClassifierCV при использовании StackingClassifier + Pipeline - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть список объектов конвейера в виде списка классификаторов.Затем я использую эти классификаторы в StackingClassifier.Теперь я хочу применить метод CalibratedClassifierCV.

Примечание: в функции подгонки передаются индексы основных данных , а не векторы 2D-объектов.

def input(index_list):
  return main_data[index_list]# return 2d feature vectors

input_function = FunctionTransformer(func= input, validate=False, accept_sparse=False)
clf = RandomForestClassifier(n_estimators=100, max_depth=2, random_state=0)
meta_clf = RandomForestClassifier(n_estimators=100, max_depth=2, random_state=0)

clf1 = Pipeline(steps=[('function_name', input_function), ('clf',clf)])
clf2 = Pipeline(steps=[('function_name', input_function), ('clf',clf)])

X= np.array([1,20,40, 60])# For example
y= np.array([0, 0, 1, 1])# For example

clf1.fit(X,y)# here, I am passing only the indices of the `main data array` and `input` function will return the actual 2d data through the pipeline.
clf2.fit(X,y)

stack_clf = StackingClassifier(classifiers=[clf1, clf2], meta_classifier=meta_clf,use_probas=True, average_probas=False)
    sclfdict_parc_dt.fit(X, y)

До этого момента функция подгонки классификатора стека или конвейера работает отлично.

Теперь я хочу применить CalibratedClassifierCV к StackingClassifier.

sig_clf = CalibratedClassifierCV(stack_clf , method="sigmoid", cv="prefit")
sig_clf.fit(X_test, y_test) # Get errors from the line

Ошибка: ошибка ValueError: Ожидаемый двумерный массив, вместо него получен одномерный массив: массив = [2 4 31 33 47 100 117 160 173 375 379 387 401 405 415 426 430 431 455].Измените ваши данные, используя array.reshape (-1, 1), если ваши данные имеют одну функцию, или array.reshape (1, -1), если он содержит один образец.

Может кто-нибудь, пожалуйстапомогите?

...