# 基于ResNet18的天体光谱分类方法
## 简介
2021年国科大数据挖掘课程作业天体光谱分类,本题目基于天池大数据竞赛,提供了18万条LAMOST望远镜获取的天体光谱数据,其中训练集14万条,测试集4万条,要求分成三类:恒星(star)、星系(galaxy)、类星体(qso),评分标准是macro f1 score。本方案基于ResNet18,对数据进行了数据增强、归一化、黑体辐射拟合等处理,最终在助教提供的项目验收数据集上取得了macro f1 score 0.9741的成绩。因为只是一个课程作业,做得很粗糙,还有很多细节可以打磨,本文是对主要思路的简单介绍,供后来者借鉴完善。
## 数据分析与处理
需要预测的光谱分为三类:恒星、星系、类星体,其从物理上的特点表现为:
1. 恒星:由引力束缚引发核聚变发光,明显的黑体辐射谱,有吸收线;
2. 星系:若干恒星构成,弱黑体辐射特征或无黑体辐射特征,有发射线;
3. 类星体:是极度明亮的活动星系核,机制为超大质量恒星吸积盘上的同步辐射,主要是伽马射线和X射线,辐射功率可达星系的几千倍,由于距离遥远、红移极大,表现为明亮的蓝色星体,具有非热连续谱。
为了提取到黑体辐射信息,我们需要知道每个数据点真正的波长,原赛事天池大数据竞赛中介绍,数据来源为LAMOST DR3数据集,波长范围为3690-9100埃米,但是LAMOST DR3中每条数据采样点大概有5000个,估计数据是经过处理的。于是我们找到了一颗极为明亮的A型恒星(极为明亮表明应当距离很近,从而红移/蓝移应当很小),识别出了其中的几条氢线,进而根据这几条氢线物理上的真实波长拟合出了标签x到波长y(nm)的转换关系:y=0.1998x+379.59,R^2=1,于是我们认为,所给数据集到真实波长的转换关系为:y=0.2x+380。由此,我们利用黑体辐射中的维恩近似公式拟合出了各个光谱的黑体辐射信息。
此外,我们对数据进行的操作还包括:转换为二进制feather文件,读写性能较csv可提升上百倍;数据增强,通过增加高斯白噪声的方式扩充星系与类星体的数据;归一化,采用按流量归一化,方法见参考文献;特征工程,提取了各个光谱的均值与标准差数据。
## 网络结构
因为本人没有很大的算力,所以采用了ResNet里最浅的ResNet18,简单将ResNet18修改为了一维的结构,具体结构参数见代码,如果算力足够,更深的结构理论上应该可以获得更好的结果。
## 代码说明
运行环境:Python 3.8
依赖关系:numpy、scipy、pandas、feather、Keras等
操作流程:
1. 执行csv2feather.py将csv文件转换为feather文件;
2. 执行process_data.py进行数据预处理;
3. 执行train_CNN.py训练神经网络;
4. 执行test_CNN.py进行测试。
注:需要参考代码配置每步输入输出路径以及文件名,或者将相应文件手动放到合适的位置并重命名。
## 结果
经过若干轮训练,我们得到的最好的模型macro f1 score 0.9785,准确率0.9945,在助教提供的项目验收测试集上结果为macro f1 score 0.9741,准确率0.993?(记不清了,评分标准是f1),总的来讲结果是不错的。
## 参考文献
[1] 天文数据挖掘大赛赛题与数据-天池大赛-阿里云天池[EB/OL]. [2021-11-25]. https://tianchi.aliyun.com/competition/entrance/231646/information.
[2] Home - LAMOST DR3[EB/OL]. [2021-11-25]. http://dr3.lamost.org/.
[3] 李乡儒, 刘中田, 胡占义*, 等. 巡天光谱分类前的预处理——流量标准化[J]. 光谱学与光谱分析, ,27(07):1448–1451.
[4] ResNet网络结构分析[EB/OL]. [2021-11-25]. https://zhuanlan.zhihu.com/p/79378841.
[5] ResNet网络详解与keras实现_海贼王-CSDN博客_keras resnet[EB/OL]. [2021-11-25]. https://blog.csdn.net/qq_25491201/article/details/78405549.
[6] 天文数据挖掘大赛 复赛第5名-禾思众成 解决方案-天池技术圈-天池技术讨论区[EB/OL]. [2021-11-25]. https://tianchi.aliyun.com/forum/postDetail?spm=5176.12586969.1002.12.7e032c85rSB80r&postId=4914.
[7] 李鑫烨, 曹佳涵. 基于卷积神经网络的天文光谱数据分类方法[EB/OL]. (2020-11-12)[2021-11-25]. https://github.com/Cjh327/AstroData-2020.
[8] 基于天文数据的深度学习网络研究[EB/OL]. [2021-11-25]. https://www.biendata.xyz/models/detail/5481/.
[9] 基于Conv1D的光谱分类模型(一维序列分类) - 科学空间|Scientific Spaces[EB/OL]. [2021-11-25]. https://kexue.fm/archives/5505/comment-page-1.
[10] 王奇勋, 赵刚. 基于DenseNet的天体光谱分类方法[J]. 天文研究与技术, ,17(1):85–95.
[11] 应承轩. 深度模型在天体分类中的应用[EB/OL]. [2021-11-25]. https://www.biendata.net/models/detail/5448/notebook_view/.
[12] 王大炮. 谐门速攻:作为loss函数的F1-score[EB/OL]. (2019-01-08)[2021-11-25]. [https://jonuknownothingsnow.github.io/2019/01/09/%E8%B0%90%E9%97%A8%E6%AD%A6%E5%AD%A6%EF%BC%9A%E4%BD%9C%E4%B8%BAloss%E5%87%BD%E6%95%B0%E7%9A%84F1-score/index.html](https://jonuknownothingsnow.github.io/2019/01/09/谐门武学:作为loss函数的F1-score/index.html).
yava_free
- 粉丝: 2648
- 资源: 753
最新资源
- 2024中国行政区划多边形矢量数据(含有十段线)
- 106从中序与后序遍历序列构造二叉树.zip
- java-leetcode题解之Making A Large Island.java
- java-leetcode题解之Make Array Strictly Increasing.java
- java-leetcode题解之Magical String.java
- java-leetcode题解之Lowest Common Ancestor of a Binary Tree.java
- java-leetcode题解之Longest Word in Dictionary through Deleting.java
- java-leetcode题解之Longest Word in Dictionary.java
- java-leetcode题解之Longest Valid Parentheses.java
- java-leetcode题解之Longest Turbulent Subarray.java
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈