光谱预处理--使数据维度相同

上次对光谱截取、直接训练的效果很差,猜测是某些波长的流量没有对齐的原因。请教一下学长,他说他当时是用光谱中特定元素的发射吸收线作为的特征,要做的是在光谱中找出这些线对应的通量,如下图蓝色的元素发射线线:

image-20210318083724555

但是上图这些发射线对应的波长上很多都没有明显的发射线,就算有,位置上也不太准确。学长说他当时是利用上发射线邻居几个波长和其他一些离得近的发射线共同判定是否存在发射线的,并且给计算出来的值一个置信度。好麻烦。。

另外这些蓝色线的位置是会随着红移(天体快速移动导致的多普勒频移)发生变化的,把上面那个图红移设置成0.5,蓝色线位置就变成了下面的:

image-20210318091053149

每种天体的观测都有或多或少的红移,这样在提取特征谱线是就需要先把红移消除一下。我还没找到消除红移的方法。。

查询资料发现光谱提取特征的其实方法有多种,提取发射线作为特征只是其中一种,其他还有PCA、小波变换、自编码等。但是我寻思机器学习方法做特征提取都约定俗成的要求样本维度相同,也就是特征空间一样,但是光谱原始数据波长不够规范,每个光谱的波长范围、取样的步长都不一样,还是得先预处理一下。

我想着是对于3838-8914波长范围内的所有波长值,在每个光谱上找离每个波长值最近的4或5个点做平均作为这个波长的通量,它与移动平均的区别是不单纯的移动,而是取某个位置附近的点。这样一是能使光谱维度变得相同,二是减小了微弱红移导致的波长有小的偏差的影响(对较大的红移没用)。

处理后的维度是3659维,正则化后画一下:

image-20210318171749540

跑一下K-means,结果如下:

image-20210318172136357

每类天体划分正确的个数为:795、918、638个。

正确率78%,与直接截取的效果相比有提升。