(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子图画布(4行5列)
fig, axes = plt.subplots(4,5
,figsize=(8,4) #画布大小
,subplot_kw= {'xticks':[],'yticks':[]}) #不要显示坐标轴
axes[0][0].imshow(faces.images[0,:,:]) #填图
#循环填补 由于4行5列 比较复杂,所以直接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')