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

主成分分析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 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 android报错 brut.common.BrutException: could not exec (exit code = 1)
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥15 复杂网络,变滞后传递熵,FDA
  • ¥20 csv格式数据集预处理及模型选择
  • ¥15 部分网页页面无法显示!