码迷,mamicode.com
首页 > 其他好文 > 详细

PCA 在手写数字数据集上的应用

时间:2019-11-26 19:58:32      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:降维   bsp   数据可视化   min()   port   weight   加载   its   datasets   

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

 

1、digits 数据演示:

from sklearn.datasets import load_digits
import matplotlib.pyplot as plt

digits = load_digits()
fig, axes = plt.subplots(2, 5, figsize=(10, 5),
                        subplot_kw={xticks‘: (), yticks: ()})
for ax, img in zip(axes.ravel(), digits.images):
    ax.imshow(img)

plt.show()

技术图片

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

from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# 加载数据
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(digits_pca[i, 0], digits_pca[i, 1], 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 区分开来,但其他数字多有重叠。

PCA 在手写数字数据集上的应用

标签:降维   bsp   数据可视化   min()   port   weight   加载   its   datasets   

原文地址:https://www.cnblogs.com/shanger/p/11937591.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!