Вопрос про pipelines
из scikit
. Есть у меня PolynomialFeatures()
, PCA()
и LogReg()
. Есть обучающая выборка x_train, y_train
и тестовая x_test, y_test
. Через x, y
обозначу union(x_test, x_train)
и union(y_test, y_train) соответственно. Хочу сделать следующий финт ушами:
Закинуть в x_poly = PolynomialFeatures(x_train)
. Применить к ним x_pca = PCA(x_poly)
с понижением размерности. Затем объединить x_union = concatenate(x_train, x_pca, axis=1)
. И поклассифицировать их через LogReg()
.
Вопросы.
-
У
pipeline
есть методfit(X, [y])
. Я так понимаю, что[y]
используется лишь в том случае, если он есть у соответствующего алгоритма. Т.е. вPCA.fit()
y не будет использоваться, а вLogReg().fit()
будет использоваться.- Каким образом разрешится вопрос с
PolynomialFeatures()
, ведь у этого объекта, методfit()
имеет 2 аргумента:fit(X, y=None)
? - Что здесь обозначает y в документации?
- В каких случаях, всё-таки, будет использоваться y в алгоритмах, присутствующих в pipeline, а в каких — нет?
- Каким образом разрешится вопрос с
-
Мне нужно объединить
x_pca
сx_train
. Как это сделать, если непосредственноnumpy
использовать нельзя? Если можно использоватьnumpy
, то как? -
Можно ли в
pipeline
использовать условия. Например. Дойдя до определённой стадии алгоритма. Скажем, доPCA()
. Я считаю дисперсию по максимальной компоненте. Если она> 0.5
, то я используюlogReg()
. Если меньше, то я используюSVM()
. Есть ли возможность реализовать такой функционал?
- Для того, чтобы понять, что происходит в PCA и PolynomialFeatures, необходимо заглянуть в код.
y
там не используется.
y=None
нужно для того чтобы сигнатура была общая у всех методовpipeline
а,None
дефолтное значение. - Для объединения фич можно использовать FeatureUnion. Данный объект легко объединяется с pipeline. Кроме того, стоить принять во внимание, что понадобится использовать ItemSelector, про который сказано тут. Также стоит принять во внимание этот ответ.
- На последний вопрос ответить однозначно не удалось. Мне сказали следующее:
не уверен насколько это хорошая идея. А что если у вас для train и test sets будут разные значения дисперсии и соответственно разные алгоритмы?