Skip to content
Snippets Groups Projects
Commit 15ac1633 authored by vkarve2's avatar vkarve2
Browse files

Replace cSNMF.ipynb

parent 024019c5
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id: tags:
# Run cSNMF on Trips data using multiplicative update rules
**Constraint:** L1 norm of columns of W should be 1
Get a copy of the data matrices in your local machine from the following links:
- https://www.dropbox.com/s/8ta7x317r32fc7q/D_trips.txt
- https://www.dropbox.com/s/2tb2sb36fgbbx4q/D_speeds.txt
%% Cell type:code id: tags:
``` python
from __init__ import *
import numpy as np
import pandas as pd
import config
import cSNMF
%matplotlib inline
```
%% Cell type:code id: tags:
``` python
## Read Full-Link data and prep for running NMF.
D = np.loadtxt('D_trips.txt')
D = np.loadtxt('D_speeds.txt')
logger.info('Full_link data has been read')
if config.SEEDED == 1:
seed_W = 0; seed_H = 1
elif config.SEEDED == 0:
seed_W = None; seed_H = None
else:
logger.critical('Seed value invalid. Needs to be 0 or 1. Check config.py!')
quit()
```
%% Output
Full_link data has been read
%% Cell type:markdown id: tags:
D = np.random.randint(1,10, (5,10))
D = np.array(D, dtype='f')
D_true = D.copy()
D[1,2] = np.nan
D[3,9] = np.nan
D[2,9] = np.nan
D[4,4] = np.nan
config.RANK = 3
print(D)
%% Cell type:code id: tags:
``` python
W, H, results = cSNMF.factorize(D, beta = 0.0001, eta = None, rank = config.RANK, seed_W = seed_W, seed_H = seed_H)
W, H, results = cSNMF.factorize(D, beta = np.nanmean(D), rank = 145, max_iter = 200, seed_W = seed_W, seed_H = seed_H)
```
%% Output
Rank= 50, Threshold= 0.2
Rank= 145, Threshold= 0.2
Initializing W and H...
W, H chosen
Iteration= 0, Error= 47.42533429, Sparsity= 0.319269175811
Iteration= 1, Error= 47.2762225793, Sparsity= 0.318363166912
Iteration= 2, Error= 47.2500167376, Sparsity= 0.317938734241
Iteration= 3, Error= 47.2244485161, Sparsity= 0.317957023037
Iteration= 4, Error= 47.1978265032, Sparsity= 0.318444572966
Iteration= 5, Error= 47.168549078, Sparsity= 0.319467956534
Iteration= 6, Error= 47.1348017887, Sparsity= 0.321187640446
Iteration= 7, Error= 47.0943472559, Sparsity= 0.323761521353
---------------------------------------------------------------------------
KeyboardInterrupt Traceback (most recent call last)
<ipython-input-3-c3177c99bca9> in <module>()
----> 1 W, H, results = cSNMF.factorize(D, beta = 0.0001, eta = None, rank = config.RANK, seed_W = seed_W, seed_H = seed_H)
~/Dropbox/Traffic_Temp/cSNMF.py in factorize(data_array, rank, beta, eta, threshold, seed_W, seed_H, log)
125 break
126
--> 127 W_new = update_W(D, W, H)
128 H_new = update_H(D, W_new, H)
129
~/Dropbox/Traffic_Temp/cSNMF.py in update_W(D, W, H)
84 def update_W(D, W, H):
85 Term_1 = D @ H.T
---> 86 Term_2 = N(W @ H) @ H.T + eta*W
87 W = m(W, Term_1)/Term_2
88 return W
~/Dropbox/Traffic_Temp/cSNMF.py in N(A)
12 def m(A,B): return np.multiply(A,B)
13 def d(A): return np.diag(np.diag(A)) # d(A) replaces all off-diagonal entries of A with 0.
---> 14 def N(A): return m(A, NONZEROS) # NONZEROS is a global variable.
15
16
~/Dropbox/Traffic_Temp/cSNMF.py in m(A, B)
10
11 ## Useful matrix operations:
---> 12 def m(A,B): return np.multiply(A,B)
13 def d(A): return np.diag(np.diag(A)) # d(A) replaces all off-diagonal entries of A with 0.
14 def N(A): return m(A, NONZEROS) # NONZEROS is a global variable.
KeyboardInterrupt:
Iteration= 0, Error= 40.9101654095, Sparsity= 0.32426786059
Iteration= 1, Error= 40.6634165516, Sparsity= 0.324219062933
Iteration= 2, Error= 40.5282704844, Sparsity= 0.324397228357
Iteration= 3, Error= 40.4331778328, Sparsity= 0.324773942914
Iteration= 4, Error= 40.3623860411, Sparsity= 0.325334497639
Iteration= 5, Error= 40.3071061301, Sparsity= 0.326067566874
Iteration= 6, Error= 40.2620748954, Sparsity= 0.326978713473
Iteration= 7, Error= 40.2239419232, Sparsity= 0.328077116807
Iteration= 8, Error= 40.1904478817, Sparsity= 0.329377452882
Iteration= 9, Error= 40.1599764316, Sparsity= 0.330901065042
Iteration= 10, Error= 40.131294526, Sparsity= 0.332656081613
Iteration= 11, Error= 40.1033928235, Sparsity= 0.334686184021
Iteration= 12, Error= 40.0753816365, Sparsity= 0.337009505924
Iteration= 13, Error= 40.0464189294, Sparsity= 0.339670662744
Iteration= 14, Error= 40.0156578158, Sparsity= 0.342724264569
Iteration= 15, Error= 39.9822072048, Sparsity= 0.346175724442
Iteration= 16, Error= 39.945103289, Sparsity= 0.350064615746
Iteration= 17, Error= 39.9032927068, Sparsity= 0.354423010552
Iteration= 18, Error= 39.8556311196, Sparsity= 0.359316971921
Iteration= 19, Error= 39.8009037974, Sparsity= 0.364781607465
Iteration= 20, Error= 39.73787736, Sparsity= 0.370835303987
Iteration= 21, Error= 39.6653930809, Sparsity= 0.377493097004
Iteration= 22, Error= 39.5825102049, Sparsity= 0.384774780249
Iteration= 23, Error= 39.4886995786, Sparsity= 0.392639164492
Iteration= 24, Error= 39.3840703944, Sparsity= 0.40101738713
Iteration= 25, Error= 39.2695854489, Sparsity= 0.40977985553
Iteration= 26, Error= 39.1471901869, Sparsity= 0.418845909905
Iteration= 27, Error= 39.0197672542, Sparsity= 0.428065825721
Iteration= 28, Error= 38.8908576087, Sparsity= 0.437276102259
Iteration= 29, Error= 38.7641717417, Sparsity= 0.446337876742
Iteration= 30, Error= 38.6430172365, Sparsity= 0.455145911481
Iteration= 31, Error= 38.5298232401, Sparsity= 0.463637800078
Iteration= 32, Error= 38.4259024998, Sparsity= 0.471740988702
Iteration= 33, Error= 38.3314833841, Sparsity= 0.47943069488
Iteration= 34, Error= 38.2459415445, Sparsity= 0.486706694114
Iteration= 35, Error= 38.1681170277, Sparsity= 0.493607165169
Iteration= 36, Error= 38.0966180863, Sparsity= 0.500136919475
Iteration= 37, Error= 38.0300559622, Sparsity= 0.506327570737
Iteration= 38, Error= 37.9671955487, Sparsity= 0.512235757685
Iteration= 39, Error= 37.9070317808, Sparsity= 0.517883888982
Iteration= 40, Error= 37.8488111533, Sparsity= 0.523320315218
Iteration= 41, Error= 37.792017712, Sparsity= 0.528571606164
Iteration= 42, Error= 37.7363387932, Sparsity= 0.533643808446
Iteration= 43, Error= 37.6816212078, Sparsity= 0.538544828869
Iteration= 44, Error= 37.627824959, Sparsity= 0.543286454205
Iteration= 45, Error= 37.574979188, Sparsity= 0.54788585383
Iteration= 46, Error= 37.5231435299, Sparsity= 0.552346102815
Iteration= 47, Error= 37.472376974, Sparsity= 0.556661899272
Iteration= 48, Error= 37.4227153616, Sparsity= 0.560850911026
Iteration= 49, Error= 37.3741576809, Sparsity= 0.564928881113
Iteration= 50, Error= 37.3266604147, Sparsity= 0.568882654233
Iteration= 51, Error= 37.2801384819, Sparsity= 0.572704463904
Iteration= 52, Error= 37.2344709124, Sparsity= 0.576415691549
Iteration= 53, Error= 37.1895093292, Sparsity= 0.580011654696
Iteration= 54, Error= 37.145087527, Sparsity= 0.583508353812
Iteration= 55, Error= 37.1010308249, Sparsity= 0.58690363591
Iteration= 56, Error= 37.0571643088, Sparsity= 0.590204762926
Iteration= 57, Error= 37.0133194905, Sparsity= 0.593426040812
Iteration= 58, Error= 36.9693392301, Sparsity= 0.596570758537
Iteration= 59, Error= 36.9250809952, Sparsity= 0.599649295188
Iteration= 60, Error= 36.8804186657, Sparsity= 0.602661658482
Iteration= 61, Error= 36.8352431592, Sparsity= 0.605610053758
Iteration= 62, Error= 36.7894621713, Sparsity= 0.608515413215
Iteration= 63, Error= 36.7429993116, Sparsity= 0.611377874061
Iteration= 64, Error= 36.6957928872, Sparsity= 0.614212852704
Iteration= 65, Error= 36.6477945382, Sparsity= 0.617020697219
Iteration= 66, Error= 36.5989678842, Sparsity= 0.619807366915
Iteration= 67, Error= 36.5492872863, Sparsity= 0.622571600489
Iteration= 68, Error= 36.4987367857, Sparsity= 0.625304442328
Iteration= 69, Error= 36.4473092408, Sparsity= 0.628022406086
Iteration= 70, Error= 36.3950056536, Sparsity= 0.630716579906
Iteration= 71, Error= 36.3418346566, Sparsity= 0.633386929332
Iteration= 72, Error= 36.2878121082, Sparsity= 0.636042308655
Iteration= 73, Error= 36.232960733, Sparsity= 0.638684040394
Iteration= 74, Error= 36.1773097256, Sparsity= 0.641302075524
Iteration= 75, Error= 36.1208942377, Sparsity= 0.643899021364
Iteration= 76, Error= 36.063754685, Sparsity= 0.646490330651
Iteration= 77, Error= 36.005935853, Sparsity= 0.649074862478
Iteration= 78, Error= 35.9474858405, Sparsity= 0.65163728043
Iteration= 79, Error= 35.8884549431, Sparsity= 0.654170796762
Iteration= 80, Error= 35.8288946152, Sparsity= 0.656686918835
Iteration= 81, Error= 35.7688566542, Sparsity= 0.659177085464
Iteration= 82, Error= 35.7083927112, Sparsity= 0.661654160031
Iteration= 83, Error= 35.6475541753, Sparsity= 0.664109805066
Iteration= 84, Error= 35.5863924203, Sparsity= 0.666539890565
Iteration= 85, Error= 35.5249593563, Sparsity= 0.66895596633
Iteration= 86, Error= 35.4633081994, Sparsity= 0.671350119507
Iteration= 87, Error= 35.4014943461, Sparsity= 0.673728404563
Iteration= 88, Error= 35.3395762029, Sparsity= 0.67608483944
Iteration= 89, Error= 35.2776157766, Sparsity= 0.678418143723
Iteration= 90, Error= 35.215678796, Sparsity= 0.680727386123
Iteration= 91, Error= 35.1538341508, Sparsity= 0.683006784586
Iteration= 92, Error= 35.0921525379, Sparsity= 0.685265842837
Iteration= 93, Error= 35.0307043923, Sparsity= 0.687497571237
Iteration= 94, Error= 34.9695574101, Sparsity= 0.689692955854
Iteration= 95, Error= 34.9087741323, Sparsity= 0.691861184596
Iteration= 96, Error= 34.8484100656, Sparsity= 0.694002110435
Iteration= 97, Error= 34.7885126397, Sparsity= 0.696115753463
Iteration= 98, Error= 34.729121021, Sparsity= 0.698200410167
Iteration= 99, Error= 34.6702665769, Sparsity= 0.700258716367
Iteration= 100, Error= 34.6119737151, Sparsity= 0.702290761257
Iteration= 101, Error= 34.554260882, Sparsity= 0.70428664146
Iteration= 102, Error= 34.4971415968, Sparsity= 0.706247957331
Iteration= 103, Error= 34.4406254483, Sparsity= 0.708181225824
Iteration= 104, Error= 34.3847189913, Sparsity= 0.710085857161
Iteration= 105, Error= 34.3294264993, Sparsity= 0.711960672992
Iteration= 106, Error= 34.2747505644, Sparsity= 0.713808996144
Iteration= 107, Error= 34.220692568, Sparsity= 0.715631123953
Iteration= 108, Error= 34.1672530487, Sparsity= 0.717428118634
Iteration= 109, Error= 34.1144319776, Sparsity= 0.719204244018
Iteration= 110, Error= 34.0622289372, Sparsity= 0.720960128374
Iteration= 111, Error= 34.0106432109, Sparsity= 0.722700084922
Iteration= 112, Error= 33.9596738184, Sparsity= 0.724424131292
Iteration= 113, Error= 33.9093195578, Sparsity= 0.72612985655
Iteration= 114, Error= 33.8595790999, Sparsity= 0.727810735392
Iteration= 115, Error= 33.8104511412, Sparsity= 0.72947413745
Iteration= 116, Error= 33.7619345768, Sparsity= 0.731122076585
Iteration= 117, Error= 33.7140286273, Sparsity= 0.732747549138
Iteration= 118, Error= 33.6667328595, Sparsity= 0.734359492491
Iteration= 119, Error= 33.6200470624, Sparsity= 0.735955008473
Iteration= 120, Error= 33.5739709879, Sparsity= 0.737530846906
Iteration= 121, Error= 33.5285040114, Sparsity= 0.739088346719
Iteration= 122, Error= 33.4836447952, Sparsity= 0.740627499405
Iteration= 123, Error= 33.4393910359, Sparsity= 0.742143799809
Iteration= 124, Error= 33.3957393332, Sparsity= 0.743645473688
Iteration= 125, Error= 33.352685172, Sparsity= 0.745126540672
Iteration= 126, Error= 33.3102229827, Sparsity= 0.746584839316
Iteration= 127, Error= 33.2683462458, Sparsity= 0.748027151782
Iteration= 128, Error= 33.2270476256, Sparsity= 0.749448252609
Iteration= 129, Error= 33.1863191276, Sparsity= 0.750850495353
Iteration= 130, Error= 33.1461522721, Sparsity= 0.752235368422
Iteration= 131, Error= 33.10653827, Sparsity= 0.75359822059
Iteration= 132, Error= 33.0674681807, Sparsity= 0.754941387753
Iteration= 133, Error= 33.0289330388, Sparsity= 0.756271889068
Iteration= 134, Error= 32.9909239498, Sparsity= 0.757593068804
Iteration= 135, Error= 32.9534321592, Sparsity= 0.758890427806
Iteration= 136, Error= 32.9164491049, Sparsity= 0.760168578635
Iteration= 137, Error= 32.8799664564, Sparsity= 0.761432230812
Iteration= 138, Error= 32.8439761386, Sparsity= 0.762685156644
Iteration= 139, Error= 32.8084703386, Sparsity= 0.76392130082
Iteration= 140, Error= 32.773441496, Sparsity= 0.765142973184
Iteration= 141, Error= 32.7388822824, Sparsity= 0.766353340299
Iteration= 142, Error= 32.7047855783, Sparsity= 0.767555034556
Iteration= 143, Error= 32.6711444532, Sparsity= 0.768739348919
Iteration= 144, Error= 32.6379521528, Sparsity= 0.769902323233
Iteration= 145, Error= 32.6052020924, Sparsity= 0.771050125548
Iteration= 146, Error= 32.5728878555, Sparsity= 0.77218044915
Iteration= 147, Error= 32.5410031937, Sparsity= 0.773295976399
Iteration= 148, Error= 32.5095420261, Sparsity= 0.774394910281
Iteration= 149, Error= 32.4784984381, Sparsity= 0.775481022119
Iteration= 150, Error= 32.4478666792, Sparsity= 0.776551457315
Iteration= 151, Error= 32.4176411602, Sparsity= 0.777609778768
Iteration= 152, Error= 32.3878164515, Sparsity= 0.778658375704
Iteration= 153, Error= 32.3583872804, Sparsity= 0.779690297572
Iteration= 154, Error= 32.3293485276, Sparsity= 0.780705043853
Iteration= 155, Error= 32.3006952223, Sparsity= 0.781704630009
Iteration= 156, Error= 32.2724225373, Sparsity= 0.782692683456
Iteration= 157, Error= 32.2445257875, Sparsity= 0.783666060507
Iteration= 158, Error= 32.2170004314, Sparsity= 0.784625952115
Iteration= 159, Error= 32.1898420787, Sparsity= 0.785572897579
Iteration= 160, Error= 32.1630465008, Sparsity= 0.786514985793
Iteration= 161, Error= 32.1366096406, Sparsity= 0.787448983642
Iteration= 162, Error= 32.1105276198, Sparsity= 0.78837178291
Iteration= 163, Error= 32.0847967389, Sparsity= 0.789281481137
Iteration= 164, Error= 32.0594134707, Sparsity= 0.790180014674
Iteration= 165, Error= 32.0343744479, Sparsity= 0.791068671972
Iteration= 166, Error= 32.0096764444, Sparsity= 0.791950873245
Iteration= 167, Error= 31.9853163543, Sparsity= 0.792824605685
Iteration= 168, Error= 31.9612911675, Sparsity= 0.793689439989
Iteration= 169, Error= 31.9375979444, Sparsity= 0.794542042538
Iteration= 170, Error= 31.9142337912, Sparsity= 0.795383913494
Iteration= 171, Error= 31.8911958367, Sparsity= 0.796218179438
Iteration= 172, Error= 31.8684812127, Sparsity= 0.797041943497
Iteration= 173, Error= 31.8460870395, Sparsity= 0.797854891959
Iteration= 174, Error= 31.8240104163, Sparsity= 0.798657322465
Iteration= 175, Error= 31.8022484162, Sparsity= 0.79945039851
Iteration= 176, Error= 31.7807980838, Sparsity= 0.800234299645
Iteration= 177, Error= 31.7596564339, Sparsity= 0.801006894064
Iteration= 178, Error= 31.7388204505, Sparsity= 0.801768728907
Iteration= 179, Error= 31.7182870843, Sparsity= 0.802520018968
Iteration= 180, Error= 31.6980532508, Sparsity= 0.803265657834
Iteration= 181, Error= 31.6781158277, Sparsity= 0.804005503692
Iteration= 182, Error= 31.6584716532, Sparsity= 0.804736936855
Iteration= 183, Error= 31.6391175254, Sparsity= 0.805462355882
Iteration= 184, Error= 31.6200502027, Sparsity= 0.806183457534
Iteration= 185, Error= 31.6012664062, Sparsity= 0.806900125155
Iteration= 186, Error= 31.5827628217, Sparsity= 0.807611165207
Iteration= 187, Error= 31.5645361036, Sparsity= 0.808315064913
Iteration= 188, Error= 31.5465828766, Sparsity= 0.809012589677
Iteration= 189, Error= 31.5288997372, Sparsity= 0.809703532489
Iteration= 190, Error= 31.5114832505, Sparsity= 0.810386878707
Iteration= 191, Error= 31.4943299455, Sparsity= 0.811062458748
Iteration= 192, Error= 31.4774363066, Sparsity= 0.811731502873
Iteration= 193, Error= 31.4607987655, Sparsity= 0.812391744874
Iteration= 194, Error= 31.4444136943, Sparsity= 0.813044109024
Iteration= 195, Error= 31.4282774034, Sparsity= 0.813690263051
Iteration= 196, Error= 31.4123861441, Sparsity= 0.814328118189
Iteration= 197, Error= 31.3967361164, Sparsity= 0.814960291318
Iteration= 198, Error= 31.3813234791, Sparsity= 0.815586512
Iteration= 199, Error= 31.3661443617, Sparsity= 0.816208061468
Iteration= 200, Error= 31.3511948744, Sparsity= 0.81682375392
Error= 31.3511948744, Sparsity= 0.830755553546
%% Cell type:code id: tags:
``` python
results
#D
#D_true
#np.around(W@H, 1)
```
%% Output
Empty DataFrame
Columns: []
Index: []
%% Cell type:code id: tags:
``` python
cSNMF.calculate_error(np.nan_to_num(D), W, H)
```
%% Output
nan
%% Cell type:code id: tags:
``` python
sum(cSNMF.W)
```
%% Output
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-6-2c1e2c620416> in <module>()
----> 1 sum(cSNMF.W)
AttributeError: module 'cSNMF' has no attribute 'W'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment