解決人工智慧PCA演算法輸出不穩定的方案

2021-08-28 10:24:37 字數 2893 閱讀 4553

pca演算法不穩定的原因

**舉例分析:

解決方案:

神經網路演算法利用了隨機性,比如初始化隨機權重,因此用同樣的資料訓練同乙個網路會得到不同的結果。

神經網路特意用隨機性來保證,能通過有效學習得到問題的近似函式。採用隨機性的原因是:用它的機器學習演算法,要比不用它的效果更好。

在神經網路中,隨機初始化很常見,比如:最優化的隨機性,比如隨機優化;正則化的隨機性,比如 dropout;初始化的隨機性,比如權值

以下**提取三維矩陣640*640*128中的二維640*640,然後對這個二維陣列降維輸出640*3

from sklearn.decomposition import pca

import numpy as np 

import matplotlib.pyplot as plt 

import scipy.io

data = scipy.io.loadmat('docia.mat') # docia.mat其實是128個640*640的矩陣的疊加,也就是640*640*128,當只有乙個通道的時候就是黑白,3個通道是rgb,128個通道就是128個的疊加

x = data['embedmap'][:,:,127]  #x裡面是640個二維陣列,每個陣列裡面有640個元素。也就是乙個640*640的矩陣啦。這裡竟然有負值,不可思議

print(x.shape)

print(len(x))

#print(len(x[0]))

pca = pca(n_components=3) #n_components返回所保留的成分個數n。

#pca.fit(x)  #fit(x),表示用資料x來訓練pca模型;fit()可以說是scikit-learn中通用的方法,每個需要訓練的演算法都會有fit()方法,它其實就是演算法中的「訓練」這一步驟。因為pca是無監督學習演算法,此處y自然等於none。

pca(copy=true, n_components=3, whiten=true) #whiten=true使得每個特徵具有相同的方差。copy=true表示在執行演算法時,將原始訓練資料複製乙份

pcax=pca.fit_transform(x)  #用x來訓練pca模型,同時返回降維後的資料pcax。

print(pcax.shape)  #顯示降維後資料的維數

print(pcax)

輸出結果如下:

輸出1:

(640, 640)

640640

(640, 3)

[[-12.223219 -7.6193943 -0.5728401 ]

[-12.112162 -7.5206504 -0.6358511 ]

[-11.950802 -7.4316864 -0.7056138 ]

…[ 18.074594 5.940609 0.24237843]

[ 18.102503 5.7039223 0.2800763 ]

[ 17.99963 5.5585537 0.05802825]]

[finished in 1.3s]

輸出2:

(640, 640)

640640

(640, 3)

[[-12.223227 -7.6194415 -0.5728512 ]

[-12.112167 -7.5206385 -0.6358729 ]

[-11.950809 -7.43169 -0.70560586]

…[ 18.074602 5.94061 0.24237396]

[ 18.102509 5.703927 0.28006825]

[ 17.999641 5.5585465 0.05802932]]

[finished in 1.3s]

可以看出pca降維演算法每次運算結果不同

**最頂端新增如下四行**:

from numpy.random import seed

seed(1) #必須在其他模組的匯入或者其他**之前,檔案的頂端部分通過呼叫 seed() 函式設定種子點。

from tensorflow import set_random_seed

set_random_seed(1)   #目標是固定隨機數的種子,讓開始的隨機數固定住,不再隨便賦初值

再次執行兩遍看效果:

發現結果穩定了

(640, 640)

640640

(640, 3)

[[-12.223243 -7.6194053 -0.5728447 ]

[-12.112166 -7.520634 -0.6358656 ]

[-11.950801 -7.431686 -0.70562375]

…[ 18.074594 5.940601 0.24238233]

[ 18.1025 5.703924 0.2800711 ]

[ 17.999636 5.558541 0.05803886]]

[finished in 2.1s]

(640, 640)

640640

(640, 3)

[[-12.223243 -7.6194053 -0.5728447 ]

[-12.112166 -7.520634 -0.6358656 ]

[-11.950801 -7.431686 -0.70562375]

…[ 18.074594 5.940601 0.24238233]

[ 18.1025 5.703924 0.2800711 ]

[ 17.999636 5.558541 0.05803886]]

[finished in 2.0s]

人工智慧 A演算法

在狀態空間搜尋中,如果每一步都利用估價函式f n g n h n 對open表中的結點進行排序,則稱a演算法。它是一種為啟發式搜尋演算法。演算法型別 把初始結點s0放入open表中,f s0 g s0 h s0 如果open表為空,則問題無解 失敗退出 把open表的第乙個結點取出放入closed表...

人工智慧 遺傳演算法

這是一類智慧型的演算法,沒有什麼固定的模式,就是乙個演算法思想,可以給我們一些有價值的指導,當我們想要做一些相關工作的時候,可以擴寬我們的視野,開啟我們的腦洞,借鑑其中的原理。我不想多說裡面的什麼數學和公式,只要你懂裡面的思想會遷移到實際的應用中就很不錯,更好的則是在其基礎上形成自己的思維,需要用的...

人工智慧 遺傳演算法

實驗過程 結果分析 摘要 設計遺傳演算法求解乙個 tsp 問題,要求求得的解不超過最優解的 10 設計較好的交叉操作,並且引入多種區域性搜尋操作 和之前的模擬退火演算法 採用相同的區域性搜尋操作 進行比較 得出設計高效遺傳演算法的一些經驗,並比較單點搜尋和多點搜尋的優缺點。遺傳演算法思想流程 實現遺...