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 設計較好的交叉操作,並且引入多種區域性搜尋操作 和之前的模擬退火演算法 採用相同的區域性搜尋操作 進行比較 得出設計高效遺傳演算法的一些經驗,並比較單點搜尋和多點搜尋的優缺點。遺傳演算法思想流程 實現遺...