cht129 2022-12-10 12:59 采纳率: 83.3%
浏览 45
已结题

主成分分析PAC降维

  1. PCA 降维的简单示例
    1) 利用 PCA 算法将表 1 中的 2 维数据的降低至 1 维,输出降维后的数据。
    表 1 数据
    数据编号 1 2 3 4 5 6
    特征 1 1 2 0 9 8 5
    特征 2 2 4 3 2 4 3
    2) 将降维后的数据恢复为 2 维数据,比较恢复的数据和表 1 中数据是否相同?并简述原因。
    3) 计算降维后主成分的贡献率,贡献率表示投影后信息的保留程度,计算方法为降维后的 k 个特征值(这里 k=1)与特征值总和的比值。
    4) 将降维前和降维后的数据分别可视化。

  2. 用 PCA 对经典数据集 Iris 进行降维
    1) 利用 PCA 算法将 Iris 数据集中的 4 维特征中的降低至 2 维,输出降维后的数据。
    2) 计算降维后主成分的贡献率。
    3) 将降维前和降维后的数据分别可视化。PCA 是否利于数据的可视化?请简述原因。

  • 写回答

2条回答 默认 最新

  • ShowMeAI 2022-12-10 13:19
    关注

    望采纳

    # 首先,我们需要导入必要的库
    import numpy as np
    from sklearn.decomposition import PCA
    import matplotlib.pyplot as plt
    
    # 然后,我们定义原始数据
    data = [[1, 2], [2, 4], [0, 3], [9, 2], [8, 4], [5, 3]]
    
    # 接着,我们使用 PCA 算法将数据降维至 1 维
    pca = PCA(n_components=1)
    pca.fit(data)
    reduced_data = pca.transform(data)
    
    # 最后,我们输出降维后的数据
    print("降维后的数据是",reduced_data)
    
    # 接下来,我们恢复降维后的数据
    recovered_data = pca.inverse_transform(reduced_data)
    
    # 最后,我们比较恢复的数据和原始数据是否相同
    print("恢复数据和原始数据相比是一样的吗", np.allclose(data, recovered_data))
    
    # 接下来,我们计算降维后主成分的贡献率
    contribution_ratio = pca.explained_variance_ratio_
    
    # 最后,我们输出贡献率
    print("贡献率:", contribution_ratio)
    
    # 接下来,我们可视化降维前和降维后的数据
    plt.scatter(data[:, 0], data[:, 1], label="Original data")
    plt.scatter(reduced_data[:, 0], np.zeros(len(reduced_data)), label="Reduced data")
    plt.legend()
    plt.show()
    
    # 首先,我们需要导入必要的库
    import numpy as np
    from sklearn.decomposition import PCA
    import matplotlib.pyplot as plt
    
    # 然后,我们导入 Iris 数据集
    from sklearn.datasets import load_iris
    iris = load_iris()
    
    # 接着,我们使用 PCA 算法将数据降维至 2 维
    pca = PCA(n_components=2)
    pca.fit(iris.data)
    reduced_data = pca.transform(iris.data)
    
    # 最后,我们输出降维后的数据
    print(reduced_data)
    
    # 接下来,我们计算降维后主成分的贡献率
    contribution_ratio = pca.explained_variance_ratio_
    
    # 最后,我们输出贡献率
    print(contribution_ratio)
    
    # 接下来,我们可视化降维前和降维后的数据
    plt.scatter(iris.data[:, 0],
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月18日
  • 已采纳回答 12月10日
  • 创建了问题 12月10日

悬赏问题

  • ¥15 对于这个复杂问题的解释说明
  • ¥50 三种调度算法报错 采用的你的方案
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败