【sklearn.decomposition.PCA使用介绍】

1. 关于主成分分析基础内容、库的参数设置等等、请参考以下文章

https://blog.csdn.net/qq7835144/article/details/103436685

https://zhuanlan.zhihu.com/p/443232256

https://www.cnblogs.com/cgmcoding/p/13627872.html

https://www.cnblogs.com/cgmcoding/p/13627872.html

2. 最简单的pca降维使用

# 假设 X 是你的 100条512 维数据
# 请替代为实际的数据,确保 X 的形状为 (样本数量, 特征维度)
X = numpy.random.rand(100, 512)  # 替代为实际的数据

# 创建 PCA 模型,选择降维到的维度(这里选择 60 维)
pca = PCA(n_components=60)

# 拟合数据并进行降维
pca.fit(X)
X_pca = pca.transform(X)
# 或者合并使用 X_pca = pca.fit_transform(X)

注:这里的 n_components,设置为浮点数时,含义是主成分的方差和所占的最小比例阈值;为整数时代表降低到多少维度

3. 首次降维处理后保存降维模型,重新加载后继续降维

# 保存 PCA 模型到文件
# 这里的 pca 是由语句 pca = PCA(n_components = 0.95) 得来
joblib.dump(pca, 'pca_model.joblib')

# 加载 PCA 模型
loaded_pca_model = joblib.load('pca_model.joblib')

4. 根据 累积方差解释率 的阈值设定,来主动选取降维大小

 pca = PCA()
 pca.fit(X)

 # 获取方差解释率: 获取每个主成分的方差解释率,以及累积方差解释率。
 explained_variance_ratio = pca.explained_variance_ratio_
 cumulative_variance_ratio = explained_variance_ratio.cumsum()

 # 选择降维大小: 根据累积方差解释率选择降维的大小。
 desired_variance_ratio = 0.92  # 选择一个阈值
 selected_components = len(cumulative_variance_ratio[cumulative_variance_ratio < desired_variance_ratio]) + 1

 # 使用选择的主成分数量进行降维
 pca_selected = PCA(n_components=selected_components)
 X_pca = pca_selected.fit_transform(X)

注:这条语句selected_components = len(cumulative_variance_ratio[cumulative_variance_ratio < desired_variance_ratio]) + 1含义:

  • cumulative_variance_ratio < desired_variance_ratio:这部分创建了一个布尔数组,其中的元素是累积方差解释率是否小于设定的 desired_variance_ratio 阈值。这个阈值通常是一个预先定义的百分比,比如0.95,表示我们希望保留至少95%的方差。

  • cumulative_variance_ratio[cumulative_variance_ratio < desired_variance_ratio]:通过使用布尔数组来索引,我们得到了满足条件的那些累积方差解释率。

  • len(cumulative_variance_ratio[cumulative_variance_ratio < desired_variance_ratio]):这部分计算满足条件的累积方差解释率的数量,也就是所选的主成分数量。

  • + 1:由于数组的索引从0开始,我们需要加1来得到实际的主成分数量。

总体来说,这一行代码的作用是计算保留累积方差解释率达到 desired_variance_ratio 的主成分数量。

举例:

  • 假设 cumulative_variance_ratio[0.2, 0.5, 0.7, 0.95],而 desired_variance_ratio0.8,那么 cumulative_variance_ratio < desired_variance_ratio 的结果将是 [True, True, False, False]
  • 接着,cumulative_variance_ratio[cumulative_variance_ratio < desired_variance_ratio] 这一部分使用布尔数组来索引 cumulative_variance_ratio 数组,只选择那些满足条件的累积方差解释率。在我们的例子中,结果将是 [0.2, 0.5]
  • 最后,len(cumulative_variance_ratio[cumulative_variance_ratio < desired_variance_ratio]) 计算了这个选择的主成分数量,即数组的长度,也就是满足条件的累积方差解释率的个数。在我们的例子中,长度是 2
  • 然后 + 1 是因为 Python 的索引是从 0 开始的,所以我们需要加 1 才能得到主成分的数量。这样就得到了 selected_components,即所选的主成分数量3。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值