前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >特征匹配PCA降维

特征匹配PCA降维

作者头像
小锋学长生活大爆炸
发布2022-03-29 13:40:34
3600
发布2022-03-29 13:40:34
举报
文章被收录于专栏:小锋学长生活大爆炸

目录

前言

上代码

运行结果

后言

原文:

教你真正使用PCA(以特征匹配为例) - 小锋学长生活大爆炸 (xfxuezhang.cn)

http://xfxuezhang.cn/index.php/archives/213/

(以下如有错误,欢迎指出~~)

前言

  网上一堆狂吹PCA和讲原理的,可就是不讲怎么用。   给了代码的,拿过来用效果贼差,毕竟那些只是为了画图的代码而已。。。

上代码

  真正使用,分3步即可: 1、数据预处理(非常重要!!!)——零均值化和缩放 原因可以看网上原理教程,这里只关心怎么做。 很简单:

代码语言:javascript
复制
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler().fit(des_query)
des_query = scaler.transform(des_query)
des_train = scaler.transform(des_train)

2、真正执行PCA

代码语言:javascript
复制
from sklearn.decomposition import PCA

pca = PCA(n_components=32, whiten=True).fit(des_query_new)
des_query_pca = pca.transform(des_query)
des_train_pca = pca.transform(des_train)

3、对结果再做归一化(欧氏距离就用l2)

代码语言:javascript
复制
import torch

def desc_l2norm(desc):
    eps_l2_norm = 1e-10
    return (desc / torch.Tensor(desc).pow(2).sum(dim=1, keepdim=True).add(eps_l2_norm).pow(0.5)).numpy()

des_query_new = desc_l2norm(des_query_pca)
des_train_new = desc_l2norm(des_train_pca)

4、注意train和query要用同一个fit,因为不然分开学习,肯定最后结果是个“0”。这里具体fit内容怎么设置,我还没整明白,随大流填个query的吧。。。

运行结果

  这时候再去做匹配,发现维度下降,有效果且精度甚至会上升。(图就不画了,懒。。。) 注意:这里只是粗匹配上升了啊,它很可能有很多的误匹配的!!!

后言

其他还有umap可以玩玩。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/01/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 上代码
  • 运行结果
  • 后言
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档