光谱预处理——R语言prospectr包
程序员文章站
2022-07-14 15:45:57
...
加载R包
###加载
install.packages("prospectr")
library(prospectr)
##帮助
??prospectr
里面会有详细的介绍
以自己数据为例
##设置读取数据位置
setwd(“C:/Users/chengdehe/Desktop/processing”)
##读取数据
data <- read.csv(“H3.csv”,check.names=F)
数据结构
数据剔除标签
##设置读取数据位置
setwd("C:/Users/chengdehe/Desktop/processing")
##读取数据
data <- read.csv("H3.csv")
##去除表头,只剩下光谱数据
data_ref <- data[ ,-(1:2)]
**
单个样本光谱的处理
**
光谱平滑处理
movav(X, w)
#####movav(X, w)_平滑处理
movav_data_ref <- movav(data_ref, 8)
##数据按照行进行平滑处理,平滑处理后的列数会减少,最后的w-1个数据无法平滑
#X代表矩阵
#w代表几个数据进行平滑,即多少数据进行均值计算
平滑后的结构,数据列数减少8-1列
Savitzky-Golay filtering
#w窗口必须为基数
#p阶数——阶数越高,误差越小,但是过拟合越来越严重
#m=0光滑
sg_data_ref <- savitzkyGolay(data_ref, p = 3, w = 11, m = 0)
导数处理
#####导数(Derivatives)——diff函数
##differences——几阶导数
diff_data_ref <- t(diff(t(data_ref), differences = 1)) #, lag = 10类似于光谱
dim(diff_data_ref)
**
整体光谱的处理
**
目的:去除光的散射和光的路径长短变化
######standardNormalVariate——散射矫正#########
snv_data_ref <- standardNormalVariate(X = data_ref)
dim(snv_data_ref)
#####Centering and scaling——blockNorm####
##
bn_data_ref <- blockNorm(X = data_ref, targetnorm = 1)$Xscaled
dim(bn_data_ref)
思考:
如果将data_ref数据进行转置,然后再进行standardNormalVariate或blockNorm,再转置得到数据
相当于对样本单个数据处理,它的意义是什么????
其他处理方式
光谱的转换
cr_data_ref <- continuumRemoval(X = data_ref, type = "A")
##type——the type of data: 'R' for reflectance (default), 'A' for absorbance
校准
ho_data_ref <- honigs(X = data_ref, k = 10, type = "A")
###k = 10选择校准光谱数
### 'A' for absorbance , 'R' for reflectance, 'CR' for continuum-removed reflectance
##小白一个,建议直接查R包的帮助