連續投影演算法大量用於光譜特徵波長選擇中,翻遍全網,spa演算法只找到了matlab版本。
連續投影演算法(successive projections algorithm, spa) 是前向特徵變數選擇方法。spa利用向量的投影分析,通過將波長投影到其他波長上,比較投影向量大小,以投影向量最大的波長為待選波長,然後基於矯正模型選擇最終的特徵波長。spa選擇的是含有最少冗餘資訊及最小共線性的變數組合。該演算法簡要步驟如下。
記初始迭代向量為 xk(
0)
x_xk
(0)
,需要提取的變數個數為n
nn,光譜矩陣為j
jj列。
任選光譜矩陣的1列(第j
jj列),把建模集的第j
jj列賦值給x
jx_j
xj,記為 xk(
0)
x_xk
(0)
。將未選入的列向量位置的集合記為sss,
s =}
s=\lbrace j,1\leq\leq, j\notin \lbrace k(0), \cdots, k(n-1) \rbrace \rbrace
s=}分別計算x
jx_j
xj對剩餘列向量的投影:
p xj
=xj−
(xjt
xk(n
−1))
xk(n
−1)(
xk(n
−1)t
xk(n
−1))
−1,j
∈s
p_ = x_j-(x^t_j x_)x_(x^t_x_)^,j\in s
pxj=
xj−
(xjt
xk(
n−1)
)xk
(n−1
)(x
k(n−
1)t
xk(n
−1)
)−1,
j∈s提取最大投影向量的光譜波長,
k (n
)=ar
g(ma
x(∥p
(xj)
∥),j
∈s
)k(n) = arg(max(\| p_(x_j) \|), j \in s)
k(n)=a
rg(m
ax(∥
p(x
j)∥
),j∈
s)令x j=
px,j
∈s
x_j = p_x, j \in s
xj=px
,j∈
s。n =n
+1
n = n + 1
n=n+
1,如果n
<
nn < n
n<
n,則按公式(1)迴圈計算。
最後,提取出的變數為
\lbrace x_ = 0, \cdots, n-1 \rbrace
。對應每一次迴圈中的k(0
)k(0)
k(0)
和n
nn,分別建立多元線性回歸分析(mlr)模型,得到建模集互動驗證均方根誤差(rmsecv),對應不同的候選子集,其中最小的rmsecv值對應的k(0
)k(0)
k(0)
和n
nn就是最優值。一般spa選擇的特徵波長分數n
nn不能很大。
-------------------------摘自《光譜及成像技術在農業中的應用》p130
**以 倉庫為準 ,待作者研究一下《開源法則》進一步編寫使用文件,在此之前 請遵守開源協議 bsd-3-clause
資料暫不提供 使用前請熟悉 pandas numpy matplot的使用 資料操作問題不予回答
光譜矩陣(m * n)m行為樣本,n列為波段
進行建模前需要對光譜進行 建模集測試集分割 與 資料歸一化 ,可先進行分割再歸一,也可以先歸一再分割,下邊為分割再歸一
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import minmaxscaler
xcal, xval, ycal, yval = train_test_split(x, y, test_size=
0.4, random_state=0)
min_max_scaler = minmaxscaler(feature_range=(-
1,1)
) xcal = min_max_scaler.fit_transform(xcal)
xval = min_max_scaler.transform(xval)
3.原始碼倉庫
Kruskal 演算法 Python版
好久沒寫了,有點遺忘記錄一下 kruskal 演算法 對所有的邊排序 依次選擇每一條邊,看是否能將邊加入到已經生成好的樹中 若是能,則加入 否則,繼續步驟2,直至新增到樹中的邊的數量為節點數 1 的時候 這裡用了並查集的思路 設定乙個記錄每乙個節點的父親的陣列,用於判斷將邊加進已生成樹時是否會有環生...
viterbi演算法 python版
牛mm細心給我講了乙個小時,終於明白它的含義,然後花了一兩節分布式資料庫的課實現了。當時牛mm還說不可能這麼快實現,結果不可能事還是發生了。發現python果真非常好用。不明白此演算法可以看這篇blog 初始化方法 viterbi演算法函式 結果列印輸出函式 nodes format path is...
greedy演算法 python版
greedy演算法的核心思想是首先計算覆蓋面大的部分,然後依次尋找其他覆蓋面最大的部分。該演算法的使用場景就像他的名字一樣,當符合貪婪屬性的時候就可以考慮。states needed set 北京 上海 廣州 深圳 杭州 南京 石家莊 銀川 stations stations kone set 北京...