机器学习学习笔记(七)PCA

概念

主成分分析PrincipalComponentAnalysis

(1)一个非监督的机器学习算法

(2)主要用于数据的降维

(3)通过降维,可以发现更便于人类理解的特征

(4)其他应用:可视化;去燥

如何找到这个让样本间间距最大的轴?

如何定义样本间间距?

使用方差(Variance):

一个目标函数的最优化问题:使用梯度上升法解决

(1)demean

def demean(X):

    returnX-np.mean(X,axis=0)

(2)梯度上升

def f(w,X): 

    returnnp.sum((X.dot(w))**2)/len(X)

实现

##主成分分析: ##样本数据集-》降维class PCA:


scikit-learn中的PCA

导包:from sklearn.decomposition import PCA

实例:pca=PCA(n_components=1)

pca.fit(X)

降维:X_reduction=pca.transform(X)

升维:x_restore=pca.inverse_transform(X_reduction)

具体判断降低到几维?

pca.explained_variance_ratio_

 

pca=PCA(0.95)##95%

pca.fit(X_train)

MINIST数据集

导包:from sklearn.datasets import fetch_mldata

下载:mnist=fetch_mldata("MNISToriginal")

降噪

原始数据图片:


降噪过程:

pca=PCA(0.5)

pca.fit(noisy_digits)

components=pca.transform(example_digits)

filter_digits=pca.inverse_transform(components)

绘制:plot_digits(filter_digits)

降噪后:



人脸识别的应用-特征脸

导包:from sklearn.datasets import fetch_lfw_people

下载:faces=fetch_lfw_people()

显示:

def plot_faces(faces):

   fig,axes=plt.subplots(6,6,figsize=(10,10),subplot_kw={'xticks':[],'yticks':[]},

                        gridspec_kw=dict(hspace=0.1,wspace=0.1))

    for i,ax inenumerate(axes.flat):

       ax.imshow(faces[i].reshape(62,47),cmap='bone')

    plt.show()

PCA:

from sklearn.decomposition import PCA

pca=PCA(svd_solver='randomized')

pca.fit(X)

plot_faces(pca.components_[:36,:])

结果:

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容