【2019年7月31日】なし機械学習アルゴリズムは、NMF(顔特徴抽出)の次元削減を教師あり学習ありません

 

 

コード

numpy.random インポート RandomStateの#の負荷が作成するためのランダムシードをRandomState 
インポートPLT AS matplotlib.pyplot
 から sklearn.datasets インポートfetch_olivetti_faces
 から sklearn インポート分解

n_col、n_row = 2 ,. 3   #1 画像表示時間設定の構成 
n_row * n_col = n_componentsを   6 
image_shape =(64、64)#1 画像の顔データサイズのセット

のDataSet = fetch_olivetti_faces(シャッフル=真、random_state = RandomState(0)) アレイ、二次元
#の印刷(データセット) 
対向= dataset.data 1次元配列
#の印刷(顔)

DEFの plot_gallery(タイトル、ロイヤリティーフリー、n_col = n_col、n_row = n_row):
    plt.figure(figsize。=(2 * n_col、2.26 * n_row)) 指定した画像サイズ 
    plt.suptitle(タイトル、サイズ= 16) 設定されたタイトルとフォントサイズ

    のための I、CoMPの中に列挙(イメージ):
        plt.subplot(n_row、n_col、私は + 1)。 サブグラフ作ら選択ビデオ 
        VMAX = MAX(comp.maxを()、 - comp.min())

        plt.imshow(comp.reshape(image_shape)、CMapの = plt.cm.gray、
                   補間 = ' 最も近い'、-Vmax = Vminと、値Vmax = Vmaxと)正規化された値、およびグレーグラフィック表示
        plt.xticksは(())
        plt.yticksは(()) 除去サブグラフ軸がラベル 
    plt.subplots_adjust(0.01、0.05、0.99、 0.93、00.04、0。 #1 セットサブピクチャ位置及び間隔調整

plot_gallery(" 最初のOlivettiは、顔を中心に" 、顔[:n_components])

推定量 = [ ' 固有顔- PCA SVDを使用して無作為' 
        decomposition.PCA(n_componentsの = 6、白く= TRUE)) 、' 非負コンポーネント- NMF ' 
        decomposition.NMF(n_componentsする。= 6、INIT = 'nndsvda "、のTol = -5E 3。 ))
] 

のための名前、推定推定:
     印刷(推定)
    を印刷" トップの抽出%S%D ... "(n_components、名))
     を印刷(faces.shape)出力画像サイズ400,4096 
    estimator.fit(顔)#の特徴を抽出するコールアルゴリズム 
    components_ = estimator.components_ 取得した特徴抽出、二次元リスト
    プリント(components_) 
    plot_gallery:(名前、コンポーネント_ [n_components])#1 に従って固定フォーマットが配置

plt.showを()

 

レンダリング:

 

おすすめ

転載: www.cnblogs.com/ymzm204/p/11278232.html