[Python与数据分析]-8手写体图片降维

2020-08-03  本文已影响0人  六千宛
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
 
# 从互联网读入手写体图片识别任务的训练数据
digits_train = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/optdigits/optdigits.tra',
                           header=None)
digits_test = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/optdigits/optdigits.tes',
                          header=None)
# 分割训练数据的特征向量和标记
X_digits = digits_train[np.arange(64)]
y_digits = digits_train[64]
 
# 从sklearn.decomposition导入PCA
from sklearn.decomposition import PCA
 
# 初始化一个可以将高维度特征向量(64维)压缩到2个维度的PCA
estimator = PCA(n_components=2)
X_pca = estimator.fit_transform(X_digits)
 
# 显示10类手写体数字图像经过PCA压缩后的2维空间分布
from matplotlib import pyplot as plt
 

def plot_pca_scatter():
    colors = ['black', 'blue', 'purple', 'yellow', 'white', 'red', 'lime', 'cyan', 'orange', 'gray']
 
    for i in range(len(colors)):
        px = X_pca[:, 0][y_digits.as_matrix() == i]
        py = X_pca[:, 1][y_digits.as_matrix() == i]
        plt.scatter(px, py, c=colors[i])
 
    plt.legend(np.arange(0, 10).astype(str))
    plt.xlabel('First Principal Component')
    plt.ylabel('Second Principal Component')
    plt.show()
 
 
plot_pca_scatter()
图片.png
上一篇下一篇

猜你喜欢

热点阅读