У меня есть список объектов конвейера в виде списка классификаторов.Затем я использую эти классификаторы в 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), если он содержит один образец.
Может кто-нибудь, пожалуйстапомогите?