• 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 区分开来,但其他数字多有重叠。

  • 相关阅读:
    月半小夜曲下的畅想--DOCTYPE模式
    css模块化思想(一)--------命名是个技术活
    聊聊css盒子模型
    【随笔】借鉴 & KPI式设计
    【转载】社交的蒸发冷却效应
    【随笔】写在闪电孵化器分享会之后
    【随笔】微信删除加载动画
    【随笔】微信支付有感 续
    【转载】如何把产品做简单
    【随笔】写在2014年的第一天
  • 原文地址:https://www.cnblogs.com/shanger/p/11937591.html
Copyright © 2020-2023  润新知