完成pca降维功能,从4维到3维

(1)配置好开发工具,使用jupyter Notebook工具实现

(2)导入Sklearn模块

(3)完成PCA(主成分分析)功能,要求:数据随机生成;使用PCA从4维降维到3维;显示降维后的效果
(4)标注每步代码的含义

参考这个:

import matplotlib.pyplot as plt
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import train_test_split
from sklearn.decomposition import PCA
##########人脸识别########
from sklearn.datasets import fetch_lfw_people
from sklearn.decomposition import PCA
faces = fetch_lfw_people(min_faces_per_person=60) #每个人60张照片
print(faces.data.shape)  #二维 1277*2914  2914=62*47
print(faces.images.shape) #三维:1277矩阵中图像个数,62每个图像的特征矩阵的行,47每个图像的特征矩阵的列
x1 = faces.data
#创建画布  subplots子图画布(45列)
fig, axes = plt.subplots(4,5
                         ,figsize=(8,4)  #画布大小
                         ,subplot_kw= {'xticks':[],'yticks':[]}) #不要显示坐标轴
axes[0][0].imshow(faces.images[0,:,:])  #填图
#循环填补  由于45列  比较复杂,所以直接1-20,方法就是将axes降维至1维
[* axes.flat]  #惰性对象
print(len([* axes.flat]))  #列表没有shape
[*enumerate(axes.flat)]  #索引加内容的元组
for i,ax in [*enumerate(axes.flat)]:
    ax.imshow(faces.images[i, :, :],cmap='gray')  #选择色彩模式,灰色
 
print(fig)
print(axes)  #axes和fig相互对应,一个框fig对应一个axes
 
axes[0][0].imshow(faces.images[0,:,:])
 
####开始降维
pca_face = PCA(150).fit(x1)
v = pca_face.components_
print(v.shape)
#可视化v
fig,axes = plt.subplots(3,6
                        ,figsize=(8,4)
                        ,subplot_kw={'xticks':[],'yticks':[]})
for i,ax in enumerate(axes.flat):
    ax.imshow(v[i,:].reshape(62,47),cmap='gray')