11种降维算法实现

本人在百度上看到哈工大的硕士生实现了11种降维算法, 然后我也去看了一下,然后把这些代码自己运转了一边,写到了自己的Github地址上面。

 

https://github.com/yingdajun/PCA-

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PCA(Principal Component Analysis)主成分分析是一常见的数据降维方法,它通过对数据的协方差矩阵进行特征分解,选取特征值较大的特征向量作为主要成分,实现数据降维。 以下是Python实现PCA降维的示例代码: ```python import numpy as np # 定义PCA类 class PCA: def __init__(self, n_components): self.n_components = n_components self.components = None self.mean = None # 训练PCA模型 def fit(self, X): # 计算均值 self.mean = np.mean(X, axis=0) # 将数据中心化 X = X - self.mean # 计算协方差矩阵 cov = np.cov(X.T) # 计算特征值和特征向量 eigenvalues, eigenvectors = np.linalg.eig(cov) # 将特征向量按照特征值大小排序 eigenvectors = eigenvectors.T idxs = np.argsort(eigenvalues)[::-1] eigenvalues = eigenvalues[idxs] eigenvectors = eigenvectors[idxs] # 选取前n_components个特征向量作为主成分 self.components = eigenvectors[0:self.n_components] # 将数据转换为主成分空间 def transform(self, X): # 将数据中心化 X = X - self.mean # 将数据投影到主成分空间 return np.dot(X, self.components.T) # 示例 X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]) pca = PCA(n_components=2) pca.fit(X) X_pca = pca.transform(X) print(X_pca) ``` 运行结果为: ``` [[-5.19615242e+00 0.00000000e+00] [-1.73205081e+00 0.00000000e+00] [ 1.73205081e+00 0.00000000e+00] [ 5.19615242e+00 0.00000000e+00]] ``` 代码中首先定义了一个PCA类,并在类中实现了fit和transform方法。fit方法用于训练PCA模型,计算数据的协方差矩阵、特征值和特征向量,并选取前n_components个特征向量作为主成分。transform方法用于将数据转换为主成分空间,即将数据投影到主成分向量上。 在示例中,我们构造了一个4行3列的矩阵X作为输入数据,然后创建了一个PCA对象,并将n_components设置为2。接着调用fit方法训练PCA模型,并调用transform方法将数据转换为主成分空间。最后输出转换后的数据X_pca。 需要注意的是,PCA算法对数据的缩放和归一化比较敏感,因此在使用时需要先对数据进行预处理。此外,PCA算法还有一些变体,如Kernel PCA,可以处理非线性数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南楚巫妖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值