Guest User

Untitled

a guest
Jun 23rd, 2020
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. import time
  2.  
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5. import pandas as pd
  6. import seaborn as sns
  7. import stumpy
  8. from scipy.signal import stft
  9. from sklearn.preprocessing import MinMaxScaler
  10. from sklearn.decomposition import PCA,NMF
  11. from sklearn.manifold import Isomap,LocallyLinearEmbedding,MDS,TSNE
  12. import umap
  13. from skimage.feature import match_template
  14.  
  15.  
  16. data = pd.read_csv('TaxiData')
  17. data.index = pd.to_datetime(data['timestamp'])
  18. data = data.resample('30T').mean()
  19. data = data.dropna(axis=0)
  20. m = 48
  21. COLUMN = 'value'
  22. data[COLUMN] = data[COLUMN].astype(np.float)
  23.  
  24. # data = pd.read_csv('StumpyData')
  25. # m = 640
  26. # COLUMN = 'steam flow'
  27.  
  28.  
  29.  
  30. start = time.time()
  31. mp = stumpy.stump(data[COLUMN], m)
  32. print(time.time() - start)
  33.  
  34. start = time.time()
  35.  
  36. freq = data[COLUMN].values
  37.  
  38. freq = stft(freq, nperseg=m, noverlap=m - 1, boundary=None)[2][0:]
  39. freq = freq / np.linalg.norm(freq, axis=0, keepdims=True)
  40.  
  41.  
  42. freq = 1 - np.abs(np.dot(freq.T, freq.conj()).imag)
  43.  
  44. # freq = np.abs(freq).T
  45.  
  46.  
  47.  
  48. # freq = PCA().fit_transform(freq)
  49. # dims = umap.UMAP().fit_transform(freq)
  50. # plt.scatter(dims[:,0],dims[:,1],c=np.arange(len(dims)))
  51. # plt.show()
  52.  
  53. print(time.time() - start)
  54.  
  55. sub_gen = (data[i:i + m] for i in range(len(data) - m))
  56. data = data[COLUMN].values
  57. start = time.time()
  58. tot = np.ones((len(data) - m + 1, len(data) - m + 1))
  59. for i, subsequence in enumerate(sub_gen):
  60. cross = match_template(data[i:].reshape(1,-1), subsequence.reshape(1,-1))
  61. tot[i, i:] = cross.flatten()
  62. tot[i:, i] = cross.flatten()
  63.  
  64. tot = np.sqrt(1 - tot)
  65. np.fill_diagonal(tot,2)
  66.  
  67. print(time.time() - start)
  68.  
  69. # tot = tot / tot.diagonal()
  70. # tot = 1 - np.abs(tot)
  71.  
  72. # freq = MinMaxScaler().fit_transform(freq.min(axis=1).reshape(-1, 1)).flatten()
  73.  
  74. mp = MinMaxScaler().fit_transform(mp[:, 0].reshape(-1, 1)).flatten()
  75. tot = MinMaxScaler().fit_transform(tot.min(axis=1).reshape(-1, 1)).flatten()
  76.  
  77. # tot = tot.min(axis=1)
  78. plt.plot(mp)
  79. # plt.plot(freq)
  80. plt.plot(tot)
  81. plt.show()
  82.  
  83. final = pd.DataFrame(np.concatenate((mp.reshape(-1, 1),freq.reshape(-1, 1), tot.reshape(-1, 1)),axis=1))
  84.  
  85. sns.pairplot(final,alpha=0.1)
  86. plt.show()
  87. print()
Advertisement
Add Comment
Please, Sign In to add comment