欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

光谱预处理——R语言prospectr包

程序员文章站 2022-07-14 15:45:57
...

加载R包

###加载
install.packages("prospectr")
library(prospectr)
##帮助
??prospectr

光谱预处理——R语言prospectr包
里面会有详细的介绍

以自己数据为例

##设置读取数据位置
setwd(“C:/Users/chengdehe/Desktop/processing”)
##读取数据
data <- read.csv(“H3.csv”,check.names=F)

数据结构
光谱预处理——R语言prospectr包
光谱预处理——R语言prospectr包
数据剔除标签

##设置读取数据位置
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列
光谱预处理——R语言prospectr包
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包的帮助

相关标签: 数据预处理