使用T-SNE降维用密度图可视化域适应效果,图像太接近的问题

T-SNE可以对高维特征降维,可以降至三维、二维、一维使得特征容易在图像中展示出来。

使用T-SNE对提取的特征降维

perplexity = 100
# 将特征降至一维
tsne = TSNE(n_components=1, n_iter=20000, init='pca', perplexity=perplexity)
X_tsne_1d = tsne.fit_transform(feature_all)
print('(特征数量,降维后源域特征维度)')
print(X_tsne_1d.shape)

 

也可以先合并源域和目标域特征再放入TSNE降维,降维后拆分开画图

# 将合并后的特征矩阵一起降维,降维后分开源域和目标域的特征方便画图
    tsne = TSNE(n_components=1, n_iter=20000, init='pca', perplexity=perplexity)
    merged_features_1d = tsne.fit_transform(merged_features)
    print('(特征数量,降维后特征维度)')
    print(merged_features_1d.shape)
    X_tsne_1d = merged_features_1d[:len(feature_all)]
    X_tsne_1d2 = merged_features_1d[len(feature_all):]

 使用kdeplot画图

     # kdeplot画图
    sns.set()  # 切换到seaborn默认配置
    # 一维kde图像
    ax1 = sns.kdeplot(X_tsne_1d, color='r', fill=True, legend=True, bw_adjust=1.5)
    ax2 = sns.kdeplot(X_tsne_1d2, color='b', fill=True, legend=True, bw_adjust=1.5)
    # bw_adjust带宽,带宽越大图像越光滑
    plt.legend(labels=['sourceDomain', 'targetDomain'], loc="upper right")
    plt.title('one-dimensional visualization of feature distribution')
    plt.show()

画出来的图像

我这里使用的无域适应的模型提取的特征,画出来特征分布很接近,换了源域和目标域也不行,统统是这样。于是查看TSNE和kdeplot文档看看有没有参数需要调整

弄了半天画的图

 T-SNE降维后的可视化效果非常依赖于参数perplecity以及特征是否合并后降维还是分开降维,以及画图函数kdeplot的bw_adjust参数,bw_adjust越大图像越平滑;合并降维会使两个域特征距离变近,即使在没有预适应的情况下图像也会很接近;可以根据自己数据集的分布差异自行调整这两个参数。

最后是用DANN训练的模型出来的图:

 可以看到有一定的域适应效果。还有一点问题就是不知道为什么颜色参数失效了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值