东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 2933|回复: 2
打印 上一主题 下一主题

[学习笔记] 20、PCA求解前n个主成分的方向向量

[复制链接]

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14437
QQ
跳转到指定楼层
楼主
发表于 2019-10-12 13:17:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
20、PCA求解前n个主成分的方向向量


  1. def direction(w):
  2.     # 将w变成单位向量 方向向量
  3.     # np.linalg.norm(w) 求向量的模
  4.     return w / np.linalg.norm(w)
  5. def gradient_ascent_first_pca(df, X, initial_w, learn_rate, n_iters, epsilon = 1e-8):
  6.     w = direction(initial_w)
  7.     for step in range(n_iters):
  8.         last_w = w
  9.         w = w + learn_rate * df(w, X)
  10.         # 注意:pca求解时 需要变为单位向量
  11.         w = direction(w)
  12.         if(abs(f(last_w, X) - f(w, X)) < epsilon):
  13.             break
  14.     return step, w
复制代码
  1. def gradient_ascent_first_pca_n(n, X, learn_rate, n_iters, epsilon = 1e-8):
  2.     assert 0 < n <= X.shape[1], 'n>0且n不能大于样本特征数'
  3.     X_pca = X
  4.     X_pca = demean(X_pca)
  5.     result = []
  6.     for i in range(n):
  7.         # 这里的w代表方向向量 不能为0向量的
  8.         initial_w = np.random.random(size=X_pca.shape[1])
  9.         step, w = gradient_ascent_first_pca(df_math, X_pca, initial_w, learn_rate=0.001, n_iters=10000)
  10.         print(step, w)
  11.         result.append(w)
  12.         X_pca = X_pca - X_pca.dot(w).reshape(-1, 1) * w
  13.         
  14.     return result
复制代码



ipynb文件在附件,可提供下载!


视频教程请参考:http://www.ai111.vip/thread-349-1-1.html
东方老师微信:dfy_88888

01.png (166.57 KB, 下载次数: 146)

01.png

02.png (97.12 KB, 下载次数: 148)

02.png

03.png (51.45 KB, 下载次数: 148)

03.png

04.png (72.12 KB, 下载次数: 150)

04.png

PCA求解前n个主成分.ipynb

23.99 KB, 阅读权限: 10, 下载次数: 0

让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

0

主题

96

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
沙发
发表于 2019-12-22 17:05:09 | 只看该作者
this is good idea
回复

使用道具 举报

0

主题

249

帖子

500

积分

高级会员

Rank: 4

积分
500
板凳
发表于 2022-11-6 10:37:51 | 只看该作者
学习中,支持
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|人工智能工程师的摇篮 ( 湘ICP备2020019608号-1 )

GMT+8, 2024-5-5 19:31 , Processed in 0.187258 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表