zoukankan      html  css  js  c++  java
  • PCA 在手写数字数据集上的应用

      在 skilearn 的手写数据集中,每个数据点都是 0 到 9 之间手写数字的一张 8*8 灰度图像。用 PCA 将其降维到二维,并可视化数据点,如下:

     

    1、digits 数据演示:

    import matplotlib.pyplot as plt
    from sklearn.datasets import load_digits
    
    # 加载数据
    digits = load_digits()
    
    # 创建画布、子区
    fig, axes = plt.subplots(nrow=2,
                             ncols=5,
                             figsize=(10, 5),    # 画布尺寸
                             subplot_kw={'xticks': (),
                                         'yticks': ()}
                            )
    
    # 通过循环显示数字图像
    for ax, img in zip(axes.ravel(), digits.images):
        ax.imshow(img)
    
    # 显示图形
    plt.show()

     
    2、将 PCA 降维到二维的数据可视化

    import matplotlib.pyplot as plt
    from sklearn.decomposition import PCA
    from sklearn.datasets import load_digits
    
    # 加载数据
    digits = load_digits()
    
    # 初始化一个 PCA 模型,在数据中提取两个主成分
    pca = PCA(n_components=2, random_state=27) 
    pca.fit(digits.data)
    digits_pca = pca.transform(digits.data)
    
    colors = ['#A83683', '#4E655E', '#853541', '#3A3120', '#535D8E',
              '#476A2A', '#7851B8', '#DB3430', '#4A2D4E', '#875525']
    
    plt.figure(figsize=(10, 10))
    
    # 设置坐标轴刻度范围
    plt.xlim(digits_pca[:, 0].min(),
             digits_pca[:, 0].max()
            )
    plt.ylim(digits_pca[:, 1].min(),
             digits_pca[:, 1].max()
            )
    
    # 以数字符号显示每个类别的位置
    for i in range(len(digits.data)):
        plt.text(x=digits_pca[i, 0],
                 y=digits_pca[i, 1],
                 s=str(digits.target[i]),
                 color=colors[digits.target[i]],
                 fontweight='bold',
                 fontsize=9
                )
    
    # 设置坐标轴标题
    plt.xlabel('First principal component')
    plt.ylabel('Second principal component')
    
    # 显示图形
    plt.show()

    3、按语

    用 PCA 提取的前两个主成分,可以很好的将 0、6、4 区分开来,但其他数字多有重叠。

  • 相关阅读:
    Java测试用例简介
    Hive使用入门
    Java中的GetOpt操作
    Tomcat的文件列表服务
    Hadoop MapReduce 初步学习总结
    hadoop集群调优-OS和文件系统部分
    02怎么学数据结构?
    01为什么学习数据结构?
    MySQL实战06の锁
    MySQL实战05の索引(下)
  • 原文地址:https://www.cnblogs.com/shanger/p/11937591.html
Copyright © 2011-2022 走看看