橄欖油產線(12:20–13:44,特級初榨分級,容易被摻偽)↗ 芥花油產線(12:02–13:31,脫臭精製/酸價/過氧化價)↗ 大豆油產線(08:00–09:28,己烷萃取)↗
今天的問題: 如果有一瓶油被貼錯標籤(例如標「特級初榨橄欖油」但其實摻了精製橄欖油或其他油), 光譜 + PCA 看得出來嗎?(待會看分數圖時回來討論——但也會看到,PCA 有時候會被一個離群點騙)
| 樣品 | 900 cm⁻¹ | 915 cm⁻¹ | 931 cm⁻¹ | 946 cm⁻¹ | 961 cm⁻¹ | … |
|---|---|---|---|---|---|---|
| EVOO_r1 | 0.005 | 0.013 | -0.011 | 0.004 | 0.004 | … |
| COC_r1 | 0.015 | 0.048 | -0.002 | -0.021 | 0.048 | … |
| SOY_r1 | -0.018 | -0.041 | -0.046 | 0.007 | -0.016 | … |
| PEA_r3 | 0.084 | 0.073 | -0.026 | 0.077 | 0.095 | … |
| …(共 18 條) | …(共 60 個波數欄) | |||||
表格數字取自 Colab NB10 用的同一份 CSV(nb10_demo_spectra.csv),不是另外編的。
數字取自同一份光譜資料的第 50 欄(1647 cm⁻¹)與第 25 欄(1266 cm⁻¹),非另外編造。
t=樣品在這個 PC 上的分數;pⱼ=第 j 個波長的loading(權重);xⱼ−x̄ⱼ=該波長先做完 mean-centering 的值
| 波長 | 原始值 x | x − x̄(中心化) | ÷ SD 後(autoscale) |
|---|---|---|---|
| 訊號波長 | 0.8 / 1.0 / 1.2 | −0.2 / 0 / 0.2 | −1 / 0 / 1 |
| 雜訊波長 | 1.001 / 0.999 / 1.000 | 0.001 / −0.001 / 0 | 1 / −1 / 0 |
兩列都用樣本標準差 SD(算法同 W01 ↗;訊號列 SD=0.2,雜訊列 SD=0.001)。
λₐ 越大,代表樣品在第 a 個 PC 方向上分散得越開——這個 PC 就越「重要」。
資料來自 Colab NB10 用的同一份模擬拉曼光譜(nb10_demo_spectra.csv),PCA 是建置本頁時即時算的,數字保證跟 NB10 一致。點色=油品,同色三點=三次重複。
同一份資料,拿掉那一條光譜後即時重新跑一次 PCA(Colab NB10 第 3、7 節有完整版本)。
oil 設成 target;sample_id/group/instrument/rep/oil_zh 設成 meta——數字波數欄留原樣當 feature對照 tools.html 的說明:Orange 流程 OR12 ↗
下方 Colab/R 程式碼是進階選項——不寫程式,用上一頁的 Orange 步驟就能完成今天的分析。
進階:Colab(scikit-learn,5 行):
進階:R(prcomp):
Colab NB10:在 Colab 開啟 NB10 ↗。備用資料集:五種糖 NIR 備用資料集(chemometrics-teaching)→
| 時間 | 內容 |
|---|---|
| 0:00–0:45 | 講解:資料表、scores/loadings、mean-centering/autoscale、解釋變異、一個離群點怎麼綁架一個 PC |
| 0:45–2:05 | 六種油 × 3 重複:Raman 785 輪站量測+各組 NIR 量測(椰子油先加熱融化) |
| 2:05–2:30 | 用 SpectraView 前處理(選用 SNV/導數),匯出成一列一樣品的 X 矩陣 |
| 2:30–3:30 | Orange 執行 PCA:分數圖(依油品上色)、loadings(vs 波數)、解釋變異;發現離群點先查原始光譜與量測紀錄,確認異常並記錄理由後再剔除或重測、重做 PCA |
| 3:30–4:00 | 各組交換、比較不同儀器(NIR)測出的分數圖是否一致 |
Colab NB10:在 Colab 開啟 NB10 ↗ ・入門(不用寫程式):Orange 流程 OR12 ↗。備用資料集:五種糖 NIR 備用資料集(chemometrics-teaching)→
點一下打勾——確認自己真的會了。