packages feed

spectral-clustering 0.3.1.1 → 0.3.1.2

raw patch · 2 files changed

+13/−4 lines, 2 files

Files

spectral-clustering.cabal view
@@ -1,6 +1,6 @@ cabal-version: >=1.10 name: spectral-clustering-version: 0.3.1.1+version: 0.3.1.2 license: GPL-3 license-file: LICENSE copyright: 2019 Gregory W. Schwartz
src/Math/Clustering/Spectral/Sparse.hs view
@@ -51,7 +51,8 @@ -- | B2 term frequency-inverse document frequency matrix of B1. newtype B2 = B2 { unB2 :: S.SpMatrix Double } deriving (Show) -- | Diagonal matrix from \(diag(B(B^{T}1))\).-newtype D  = D { unD :: S.SpMatrix Double } deriving (Show)+-- newtype D  = D { unD :: S.SpMatrix Double } deriving (Show)+newtype D  = D { unD :: S.SpVector Double } deriving (Show) -- | Matrix from \(D^{-1/2}B}\). newtype C  = C { unC :: S.SpMatrix Double } deriving (Show) -- | Normed rows of B2. For a complete explanation, see Shu et al., "Efficient@@ -99,7 +100,7 @@ -- | Get the signed diagonal transformed B matrix. bToD :: B -> D bToD (B b) = D-           . S.diagonalSM+           -- . S.diagonalSM            . flip S.extractCol 0            $ (fmap abs b)        S.#~# ((fmap abs $ S.transposeSM b) S.#~# (S.fromColsL [S.onesSV n]))@@ -108,7 +109,15 @@  -- | Get the matrix C as input for SVD. bdToC :: B -> D -> C-bdToC (B b) (D d) = C $ (fmap (\x -> x ** (- 1 / 2)) d) S.#~# b+bdToC (B b) (D d) = C+                  . S.fromListSM (S.dimSM b)+                  . fmap (\ (!i, !j, !x)+                        -> (i, j, (S.lookupDenseSV i d') * x)+                        )+                  . S.toListSM+                  $ b+  where+    d' = S.sparsifySV $ fmap (\x -> x ** (-1 / 2)) d  -- | Obtain the second left singular vector (or N earlier) and E on of a sparse -- matrix.