机器学习PCA

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

2018-08-29  本文已影响56人  下雨天的小白鞋

概念

主成分分析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,:])

结果:

上一篇 下一篇

猜你喜欢

热点阅读