trazando una matriz 2D en python, código y la visualización más útil

Tengo una matriz muy grande (10×55678) en formato de matriz “numpy“. Las filas de esta matriz corresponden a algunos “temas” y las columnas corresponden a palabras (palabras únicas de un corpus de texto). Cada entrada i, j en esta matriz es una probabilidad, lo que significa que la palabra j pertenece al tema i con probabilidad x. ya que estoy usando ids en lugar de palabras reales y como la dimensión de mi matriz es realmente grande, necesito visualizarla de una manera. ¿Qué visualización sugieres? una ttwig simple? ¿O uno más sofisticado e informativo? (Estoy preguntando por esto porque ignoro los tipos útiles de visualización). Si es posible, ¿puedes darme un ejemplo que usando una matriz numpy? Gracias

La razón por la que hice esta pregunta es que quiero tener una visión general de las distribuciones de palabra-tema en mi corpus. Cualquier otro método es bienvenido.

Ciertamente, podría usar el método de presentación de imagen de imshow o pcolor para mostrar los datos, pero como se mencionó en los comentarios, puede ser difícil interpretarlo sin hacer zoom en los subconjuntos de los datos.

 a = np.random.normal(0.0,0.5,size=(5000,10))**2 a = a/np.sum(a,axis=1)[:,None] # Normalize pcolor(a) 

Ejemplo aleatorio sin clasificar

A continuación, puede ordenar las palabras por la probabilidad de que pertenezcan a un grupo:

 maxvi = np.argsort(a,axis=1) ii = np.argsort(maxvi[:,-1]) pcolor(a[ii,:]) 

introduzca la descripción de la imagen aquí

Aquí el índice de palabras en el eje y ya no es igual al orden original ya que las cosas se han ordenado.

Otra posibilidad es usar el paquete networkx para trazar grupos de palabras para cada categoría, donde las palabras con mayor probabilidad están representadas por nodos que son más grandes o más cercanos al centro del gráfico e ignoran las palabras que no tienen membresía en la categoría . Esto podría ser más fácil ya que tiene un gran número de palabras y un pequeño número de categorías.

Esperemos que una de estas sugerencias sea de utilidad.

La clave a considerar es si tiene una estructura importante a lo largo de ambas dimensiones en la matriz. Si lo hace, entonces vale la pena probar una gráfica matricial de color (por ejemplo, imshow), pero si sus diez temas son básicamente independientes, probablemente sea mejor hacer diez gráficas de histogtwigs o líneas individuales. Ambas plots tienen ventajas y desventajas.

En particular, en los gráficos matriciales completos, los valores de color del eje z no son muy precisos ni cuantitativos, por lo que es difícil verlos, por ejemplo, pequeñas ondulaciones en una tendencia, o evaluaciones cuantitativas de las tasas de cambio, etc. costo para estos Y también son más difíciles de desplazar y acercar, ya que uno puede perderse y, por lo tanto, no examinar toda la ttwig, mientras que la panorámica a lo largo de una ttwig 1D es trivial.

Además, por supuesto, como han mencionado otros, 50K puntos son demasiados para visualizarlos, por lo que deberá ordenarlos, o algo así, para reducir la cantidad de valores que realmente necesitará evaluar visualmente.

Sin embargo, en la práctica, encontrar una buena técnica de visualización para un conjunto de datos dado no siempre es trivial, y para conjuntos de datos grandes y complejos, las personas intentan todo lo que tiene la posibilidad de ser útil, y luego eligen lo que realmente ayuda.