使用TimeGAN建模和生成时间序列数据( 二 )
#Alsodecidesoutput_unitsforgenerator
gamma=1#Usedfordiscriminatorloss
noise_dim=32#Usedbygeneratorasastarterdimension
dim=128#UNUSED
batch_size=128
learning_rate=5e-4
beta_1=0#UNUSED
beta_2=1#UNUSED
data_dim=28#UNUSED
#batch_size,lr,beta_1,beta_2,noise_dim,data_dim,layers_dim
gan_args=[batch_size,learning_rate,beta_1,beta_2,noise_dim,data_dim,dim]
现在我们已经生成了synth_data , 让我们看看它与原始数据对比可视化 。 我们可以为28个特征中的每一个做一个图 , 看看它们随时间步长的变化 。 
文章图片
由于这些图只是粗略的展示 , 可能对比较没有什么特别帮助 。 但是我们看到 , 合成数据肯定与原始(真实)数据不同 。 考虑到数据集有如此多的特性 , 也很难直观地将它们可视化和解释在一起 。 现在我们更深入的比较数据集 , 这样可以让我们进行更深入的理解二者之间的关系 。
评估和可视化
我们可以利用以下两种大家都知道的可视化技术:
PCA——主成分分析
t-SNE—t-分布式随机邻居嵌入
这些技术背后的基本思想是应用降维来可视化那些具有大量维度(即大量特征)的数据集 。 PCA和t-SNE都能够实现这些 , 它们之间的主要区别在于PCA试图保留数据的全局结构(因为它着眼于在整个数据集中保留全局数据集方差的方式) , 而t-SNE试图保留局部结构(通过确保原始数据中靠近的点的邻居在降维空间中也靠近在一起) 。
对于我们的用例 , 我们将使用来自sklearn的PCA和TSNE对象 。
fromsklearn.decompositionimportPCA
fromsklearn.manifoldimportTSNE
sample_size=250
idx=np.random.permutation(len(energy_data))[:sample_size]
#Convertlisttoarray,buttakingonly250randomsamples
#energy_data:(list(19711(ndarray(24,28))))->real_sample:ndarray(250,24,28)
real_sample=np.asarray(energy_data)[idx]
synthetic_sample=np.asarray(synth_data)[idx]
#Forthepurposeofcomparisonweneedthedatatobe2-Dimensional.
#ForthatreasonwearegoingtouseonlytwocomponentsforboththePCAandTSNE.
#synth_data_reduced:{ndarray:(7000,24)}
#energy_data_reduced:{ndarray:(7000,24)}
synth_data_reduced=real_sample.reshape(-1,seq_len)
energy_data_reduced=np.asarray(synthetic_sample).reshape(-1,seq_len)
n_components=2
pca=PCA(n_components=n_components)
tsne=TSNE(n_components=n_components,n_iter=300)
#Thefitofthemethodsmustbedoneonlyusingtherealsequentialdata
pca.fit(energy_data_reduced)
#pca_real:{DataFrame:(7000,2)}
#pca_synth:{DataFrame:(7000,2)}
pca_real=pd.DataFrame(pca.transform(energy_data_reduced))
pca_synth=pd.DataFrame(pca.transform(synth_data_reduced))
#data_reduced:{ndarray:(14000,24)}
data_reduced=np.concatenate((energy_data_reduced,synth_data_reduced),axis=0)
#tsne_results:{DataFrame:(14000,2)}
tsne_results=pd.DataFrame(tsne.fit_transform(data_reduced))
现在要绘制的数据已经准备好了 , 我们可以使用matplotlib绘制原始转换和合成转换 。 pca_real和pca_synth一起给出了PCA结果 , 而tsne_results包含了原始和合成t-SNE转换 。 
文章图片
这些图告诉我们什么?它们向我们展示了如果将整个数据集转换为具有较少特征的数据集(两个轴对应于两个特征) , 那么整个数据集可能是这样的 。 PCA图可能不足以得出一个正确的结论 , 但t-SNE图似乎告诉我们 , 原始数据(黑色)和合成数据(红色)似乎遵循类似的分布 。 此外 , 一个对特定数据集的观察是 , 在整个数据集中有7组(集群) , 它们的数据点(明显)彼此相似(因此聚在一起) 。
总结
【使用TimeGAN建模和生成时间序列数据
- iPhone|美媒:iPhone15确认使用USB - C口,今年升级有遗憾!
- 中兴|使用中兴Axon40UItra之后,明白屏幕完美,却在市场上遇冷的原因
- 互联互通|哪些无人机适合新手使用?从普宙O2到大疆Mini 3 Pro,一文读懂
- 华为|越来越全面性的手机,过度使用,是否会损坏其内存卡机速度
- 如何实现一根网线连接路由器,既能上网又可以使用itv呢?
- iPhone 13深度使用半年,体验虽然流畅,但两个缺点却让人无奈!
- 电饭锅第一次使用,有什么性能检测法子?
- 如何在 Notion 类产品中使用卡片笔记写作法:理念与实践
- B站“特殊版”来了!全程使用无广告,比开会员还给力
- 马克·扎克伯格|扎克伯格宣布打造元宇宙钱包,计划让10亿人使用元宇宙
