sklearn score onehotencoder one labelencoder hot estimator categorical_features accuracy scipy statistics scikit-learn

scipy - score - Ajuste de DPGMM de Scikit-Learn: ¿número de componentes?



plot roc curve python (1)

Recientemente tuve dudas similares sobre los resultados de esta implementación de DPGMM. Si comprueba el ejemplo proporcionado, observará que DPGMM siempre devuelve el modelo con n_components, ahora el truco es eliminar los componentes redundantes. Esto se puede hacer con la función de predicción.

Desafortunadamente este importante ícono está oculto en el comentario en el ejemplo del código.

# ya que el DP no usará todos los componentes a los que tenga acceso
# a menos que lo necesite, no deberíamos trazar los componentes redundantes

Estoy intentando adaptar un modelo mixto normal a algunos datos usando el algoritmo DPGMM de scikit-learn. Una de las ventajas anunciadas en [0] es que no necesito especificar el número de componentes; lo cual es bueno, porque no sé la cantidad de componentes en mis datos. La documentación indica que solo necesito especificar un límite superior. Sin embargo, parece que eso no es cierto:

>>> data = numpy.random.normal(loc = 0.0, scale = 1.0, size = 1000) >>> from sklearn.mixture import DPGMM >>> d = DPGMM(n_components=5) >>> d.fit(data.reshape(-1,1)) DPGMM(alpha=1.0, covariance_type=''diag'', init_params=''wmc'', min_covar=None, n_components=5, n_iter=10, params=''wmc'', random_state=None, thresh=None, tol=0.001, verbose=0) >>> d.n_components 5 >>> d.means_ array([[-0.02283383], [ 0.06259168], [ 0.00390097], [ 0.02934676], [-0.05533165]])

Como puede ver, la adaptación informa cinco componentes (el límite superior) incluso para datos claramente muestreados de una sola distribución normal.

¿Estoy haciendo algo mal? ¿Entendí mal algo?

Muchas gracias por adelantado,

Lukas

[0] http://scikit-learn.org/stable/modules/mixture.html#dpgmm