tutorial sklearn scikit learn feature python machine-learning scikit-learn pipeline

python - scikit - ¿Es posible alternar un cierto paso en sklearn pipeline?



scikit learn feature union (2)

  • Pipeline pasos de Pipeline no se pueden hacer actualmente opcionales en una búsqueda de cuadrícula, pero podría ajustar la clase de PCA en su propio componente OptionalPCA con un parámetro booleano para desactivar PCA cuando se solicite como una solución rápida. Es posible que desee echarle un vistazo a hyperopt para configurar espacios de búsqueda más complejos. Creo que tiene una buena integración de sklearn para admitir este tipo de patrones de forma predeterminada, pero ya no puedo encontrar el documento. Tal vez echar un vistazo a esta charla .

  • Para el problema de los parámetros dependientes, GridSearchCV admite árboles de parámetros para manejar este caso como se demuestra en la documentación .

Me pregunto si podemos configurar un paso "opcional" en sklearn.pipeline . Por ejemplo, para un problema de clasificación, es posible que desee probar un ExtraTreesClassifier con Y sin una transformación de PCA por delante. En la práctica, podría ser una interconexión con un parámetro adicional que especifique el alternar del paso de PCA , de modo que pueda optimizarlo a través de GridSearch etc. No veo una implementación de este tipo en sklearn source, pero ¿hay algún trabajo-? ¿alrededor?

Además, dado que los valores de parámetros posibles de un paso siguiente en la canalización pueden depender de los parámetros en un paso anterior (por ejemplo, los valores válidos de ExtraTreesClassifier.max_features dependen de PCA.n_components ), es posible especificar dicha dependencia condicional en sklearn.pipeline y sklearn.grid_search ?

¡Gracias!


De los documentos :

Los pasos individuales también se pueden reemplazar como parámetros, y los pasos que no son finales se pueden ignorar estableciéndolos en Ninguno:

from sklearn.linear_model import LogisticRegression params = dict(reduce_dim=[None, PCA(5), PCA(10)], clf=[SVC(), LogisticRegression()], clf__C=[0.1, 10, 100]) grid_search = GridSearchCV(pipe, param_grid=params)