Saltar al contenido

Salida del clasificador de posprocesamiento en scikit learn Pipeline

Nuestros mejores investigadores agotaron sus depósitos de café, por su búsqueda día y noche por la solución, hasta que Max halló el resultado en Bitbucket así que en este momento la compartimos aquí.

Solución:

Puedes usar la clase sklearn.preprocessing.TransformedTargetRegressor con su clasificador SVM como el regresor y use el inverse_func argumento para transformar sus etiquetas después de la clasificación.

Sin embargo, desde TransformedTargetRegressor se supone que debe transformar sus etiquetas en un nuevo espacio antes de ajustarlas y reasignar las predichas al espacio original, espera un array de etiquetas para transformar antes de colocar y no acepta un vacío o None objetivo como entrada. Por lo tanto, debe proporcionar un objetivo ficticio para su canalización, lo que puede hacer que su código sea un poco confuso.

Ejemplo:

import numpy as np
from sklearn.compose import TransformedTargetRegressor
from sklearn.svm import OneClassSVM
from sklearn.pipeline import Pipeline

X = np.random.random((10, 2))

regressor = OneClassSVM(gamma='auto')
svm = TransformedTargetRegressor(regressor=regressor,
    inverse_func=lambda x: (x+1)//2, # Function that remaps your labels
    check_inverse=False) # If not set to False, this code will generate an error since the provided inverse_func is not the inverse of the default func argument, which is the identity function

pipeline = Pipeline([
    ('svm', svm)
])

pipeline.fit(X, np.zeros((1,1))) # An array of fake label is provided to the pipeline
pipeline.predict(X)

Producción:

array([[0],
       [1],
       [1],
       [1],
       [1],
       [0],
       [1],
       [0],
       [0],
       [0]])

Tenga en cuenta que si necesita pasar parámetros a su OneClassSVM clasificador a través de Pipeline con un diccionario, por ejemplo en una búsqueda de cuadrícula con GridSearchCVnecesitas agregar regressor__ a su parámetro key nombre entre svm__ y el nombre de su parámetro. Por ejemplo, svm__kernel se convierte svm__regressor__kernel.

Desarrollamos PipeGraph, una extensión de Scikit-Learn Pipeline que le permite obtener datos intermedios, crear gráficos como flujos de trabajo y, en particular, resolver este problema (vea los ejemplos en la galería en http://mcasl.github.io/PipeGraph )

Te invitamos a proteger nuestro quehacer poniendo un comentario y valorándolo te lo agradecemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *