我正在使用一個 3072 x 3072 稀疏矩陣,它應該有一些結構化塊、一些零塊和一些非結構化塊。現在我已經提取了矩陣的所有非零索引并為每一行排列了具有非零值的列索引.我試圖通過使用 excel 并為看起來更接近的列索引繪制 25 行,在這些非零元素中找到集群。由于矩陣很大,這非常繁瑣且耗時。
任何人都可以提出一種有效的方法來查找和可視化矩陣中的這種結構嗎?
uj5u.com熱心網友回復:
您可以使用該spy函式繪制稀疏矩陣。檔案在這里。
我要指出的是 3072 x 3072 并不是特別大。您可以將其轉換為密集矩陣并使用imagesc.
uj5u.com熱心網友回復:
考慮到所有因素,3072x3072 并不是特別大。即使使用 64 位數字,也只需要 75.5 MB 左右的記憶體。在現代硬體上將其表示為密集矩陣應該沒有任何問題。我的 Galaxy S8 手機能夠使用 Python 和 numpy 在 4.6 秒內反轉該大小的矩陣,因此從計算的角度來看,您應該有很多可用的選項。
這代表什么樣的資料?它是積極的,將其解釋為圖形或網路是否有意義?有多吵?具體來說,給定塊中的行和列是否“連接”到其他塊,或者它們是否完全不相交?如果是后者,您可以使用任何演算法在圖中進行搜索,以找到圖中的連通分量(將行和列分組為其他集合無法到達的集合)。如果是前者,那就有點復雜了。
您始終可以將矩陣可視化為熱圖 - 較大元素的較暗網格正方形,零表示白色。但這對可視化沒有幫助,除非行和列的排序方式使塊在視覺上不同。如果很清楚,排序以便連接的組件是連續的是一個不錯的選擇,但如果不是,您將需要查看更復雜的方法。Reverse Cuthill-Mcgee 是一種以最小化圖形帶寬的方式對行和列進行排序的演算法 - 試圖使非零條目盡可能靠近對角線。如果您沒有預烘焙選項,這可以通過廣度優先搜索輕松實作。如果這不起作用,我建議研究圖磁區方法,它可以解決塊不完全不相交的情況。譜聚類很容易通過特征分解和 K 均值來實作,它的優點是可以快速計算分解(與反演相同的復雜性)并且通過詳盡的搜索確定正確的簇數是可行的,因為你不會不需要每次都進行分解,只有k個意思。然后,您可以對行和列重新排序,將它們放在同一個集群中,并使用熱圖進行可視化。
或者,您可以使用任何好的網路可視化工具直接繪制一個節點合理放置的圖形,但根據您需要的詳細程度,這可能無法很好地解釋這么多節點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/352778.html
