美文网首页
LAMOST一期巡天中M矮星的数据挖掘

LAMOST一期巡天中M矮星的数据挖掘

作者: qiufeng1ye | 来源:发表于2020-07-03 16:51 被阅读0次

LAMOST简介

郭守敬望远镜(LAMOST,大天区面积多目标光纤光谱天文望远镜)是一架新类型的大视场兼备大口径望远镜,即“王-苏反射施密特望远镜”。

它是由反射施密特改正板MA(大小为5.72米×4.40米,24块对角线长1.1米,厚度为25毫米的六角形平面子镜组成)、球面主镜MB(大小为6.67米×6.05米,37块对角线长为1.1米,厚度为75毫米的六角形球面子镜组成)和焦面构成。球面主镜及焦面固定在地基上,反射施密特改正板作为定天镜跟踪天体的运动,望远镜在天体经过中天前后时进行观测。天体的光经MA反射到MB,再经MB反射后成像在焦面上。焦面上放置的光纤,将天体的光分别传输到光谱仪的狭缝上,然后通过光谱仪后的CCD探测器同时获得大量天体的光谱。

反射施密特改正板MA 球面主镜MB 焦面板

LAMOST应用薄镜面主动光学加拼接镜面主动光学技术,在曝光1.5小时内可以观测到暗达20.5等的天体,使其成为大口径兼大视场光学望远镜的世界之最。同时,采用并行可控的光纤定位技术,在5度视场,直径为1.75米的焦面上放置4000根光纤,同时获得4000个天体的光谱,使其成为世界上光谱获取率最高的望远镜。

LAMOST安放在中国科学院国家天文台兴隆观测站,该站地处燕山主峰南麓,位于河北省兴隆县连营寨(东经7小时50分,北纬40度23分),海拔960米。LAMOST在大规模光学光谱观测和大视场天文学研究方面,居于国际领先的地位。

国家天文台兴隆观测站

(上述文字和图片来源于LAMOST官网


LAMOST DR1 M矮星数据下载

LAMOST第一次巡天数据发布(DR1)包括有先导巡天和第一年巡天的光谱数据,观测时间自2011年10月24日开始,到2013年6月15日结束。其中LAMOST先导巡天自2011年10月24日开始、到2012年6月24日结束,共观测401个天区,获得547,868条信噪比大于10的恒星光谱和373,481颗恒星参数星表。2012年9月28日,LAMOST正式巡天启动,2013年6月15日圆满结束第一年巡天观测,共观测689个天区,获得1,173,928条信噪比大于10的恒星光谱和711,923颗恒星参数星表。 DR1释放光谱数共计220万,其中还包括108万颗恒星光谱参数星表。

LAMOST一期观测天区

LAMOST DR1 相关论文

我们在LAMOST一期官网上就能够直接下载巡天结构化数据,通过data access->file download,点击OK同意数据政策,选择catalog目录下的dr1_m_stellar.csv.gz文件,解压后就是M矮星的数据集了(csv格式)。

同意数据政策 选择M矮星数据(csv格式)

LAMOST DR1 M矮星数据探索

数据探索在机器学习中我们一般称为EDA(Exploratory Data Analysis)

1. 加载数据集

import pandas as pd

df = pd.read_csv('datalab/65470/dr1_m_stellar.csv', header = None)
df1 = df[0].str.split('|',expand=True) #去除分割线
df1.columns = df1.iloc[0] #将第一行复制为列头
df = df1.drop(index=[0]) #去掉第一行

df.head(5)
加载数据集

2. 数据概况

df.info()
数据集信息

根据上述信息,数据集大小为121522行32列,不包含空值,原始数据类型都是object,要进行数据类型转换。而根据官网给出的字段信息表,整理字段信息如下:

M dwarfs catalog

Field (unit) Type Comment
specId long integer Unique Spectra ID
designation varchar Target Designation
obsDate float Target Observation Date
plateId Integer Plate ID
lmjd char Local Modified Julian Day
planId char Plan Name
spId integer Spectrograph ID
fiberId integer Fiber ID
RA (degree) float Right Ascension
Dec (degree) float Declination
snru float Signal Noise Ratio of u filter
snrg float Signal Noise Ratio of g filter
snrr float Signal Noise Ratio of r filter
snri float Signal Noise Ratio of i filter
snrz float Signal Noise Ratio of z filter
objType varchar Object Type
class varchar Stellar Class
subClass varchar Stellar Sub-Class
magType varchar Target Magnitude Type
mag1 (mag) float Associated Magnitude 1
mag2 (mag) float Associated Magnitude 2
mag3 (mag) float Associated Magnitude 3
mag4 (mag) float Associated Magnitude 4
mag5 (mag) float Associated Magnitude 5
mag6 (mag) float Associated Magnitude 6
mag7 (mag) float Associated Magnitude 7
tsource varchar Organization or person who submits input catalog
fiberType varchar Fiber Type of target [Obj, Sky, F-std, Unused, PosErr, Dead]
tfrom varchar Input catalog submitted by an organization or a person determined by the tsource
tInfo varchar Target ID from SDSS, UCAC4, PANSTAR and other catalogue
RV (km/s) float Heliocentric Radial Velocity
RV_err (km/s) float Uncertainty of Heliocentric Radial Velocity
ATCHA integer Magnetic Activity

LAMOST DR1 M矮星数据信息描述

根据表中定义好的数据类型,将数据集中的数据做类型转换。

df["#obsid"] = df["#obsid"].astype("int")
df['obsdate'] = pd.to_datetime(df['obsdate'],errors='ignore')
df["spid"] = df["spid"].astype("int")
df["fiberid"] = df["fiberid"].astype("int")
df["objra"] = df["objra"].astype("float")
df["objdec"] = df["objdec"].astype("float")
df["snru"] = df["snru"].astype("float")
df["snrg"] = df["snrg"].astype("float")
df["snrr"] = df["snrr"].astype("float")
df["snri"] = df["snri"].astype("float")
df["snrz"] = df["snrz"].astype("float")
df["mag1"] = df["mag1"].astype("float")
df["mag2"] = df["mag2"].astype("float")
df["mag3"] = df["mag3"].astype("float")
df["mag4"] = df["mag4"].astype("float")
df["mag5"] = df["mag5"].astype("float")
df["mag6"] = df["mag6"].astype("float")
df["mag7"] = df["mag7"].astype("float")
df["rv"] = df["rv"].astype("float")
df["rv_err"] = df["rv_err"].astype("float")
df["ATCHA"] = df["ATCHA"].astype("int")
df.info()
类型转换后的数据集信息

接下来可视化数据集的描述和相关性,这里用到了seaborn来绘制热力图。

import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

plt.figure(figsize=(12,8))
sns.heatmap(df.describe().transpose(), annot=True, linecolor="w", linewidth=2)
plt.show()

数据集摘要
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

plt.figure(figsize=(12,8))
sns.heatmap(df.corr(), annot=True, linecolor="w", linewidth=2)
plt.show()

相关性

3. 数字特征和类别特征

我们再根据数据类型将特征分为数字特征和类别特征,然后对类别特征查看unique分布。

import numpy as np

#数字特征
numeric_features = df.select_dtypes(include=[np.number])
print(numeric_features.columns)
#类别特征
categorical_features = df.select_dtypes(include=[np.object])
print(categorical_features.columns)
数字特征和类别特征
for fea in categorical_features:
    print(df[fea].nunique())
类别特征的unique值分布

4. 数字特征分析

然后开始分析数值特征,用直方图来显示每个数字特征的分布情况。

import warnings
warnings.filterwarnings("ignore") 
f = pd.melt(df, value_vars=numeric_features) #将数据集按数字特征分组
f.columns=['field','value'] #重命名列名field、value
g = sns.FacetGrid(f, col='field',  col_wrap=4, sharex=False, sharey=False) #按field分图,每行4个
g = g.map(sns.distplot, "value") #使用直方图显示value
数值特征分析

我们再重新整理下每个数字特征代表的意义,做进一步的分析。

  • obsid 观测id,取值为正整数,用于记录观测的id,对数据挖掘意义不大。
  • spid 摄谱仪id,取值从1到16的正整数,可用于分类。
  • fiberId 光纤id,取值从1到250的正整数,结合摄谱仪id使用。
  • objra 赤经,取值为浮点型的正实数,结合赤纬定位目标。
  • objdec 赤纬,取值为浮点型的正实数,结合赤经定位目标。
  • snru snrg snrr snri snrz 目标五个波段的信噪比,数据挖掘的重点。
  • mag1 mag2 mag3 mag4 mag5 mag6 mag7 目标七个波段对应的星等,按波段分别对应ugrizjh七个波段,数据挖掘的重点。
  • rv 日心视向速度,单位是km/s,-9999代表不确定。
  • rv_err 日心视向速度的不确定度。
  • ATCHA 磁活动性,取值为0、1、-9999,0代表无磁活动,1的代表有磁活动,-9999代表不确定是否有磁活动,可用于分类。

(天文名词的中文翻译来源于 NADC 天文学名词数据库

天文名词解释:星等(magnitude)

5. 类别特征分析

同样地对每个类别特征进行一番整理,以便进一步分析。

for cat_fea in categorical_features:
    print(cat_fea + "的特征分布如下:")
    print("{}特征有个{}不同的值".format(cat_fea, df[cat_fea].nunique()))
    print(df[cat_fea].value_counts())
类别特征分析1 类别特征分析2
  • designation 目标编号,采用了SDSS(斯隆数字巡天)的名字规则,J后面到+前面的数字代表以HMS(时分秒)为单位的赤经,+后面的数字则以DMS(度分秒)为单位的赤纬,不具数据挖掘条件。
  • mjd 儒略日,主要是天文学上使用,可转化为公历。
  • planid 观测计划编号,用于分类。
  • objtype 分类,有16个类别,对数据挖掘意义不大。
  • class 星体分类,通过光谱分析后的成果。分为 ‘STAR’(恒星), ‘GALAXY’(星系), ‘QSO’ (类星体), ‘Unknown’(不明)四大类。在M矮星数据中都是恒星类型。
  • subclass 星体子分类,结合星体分类,可作为目标的预测值,是数据挖掘的核心。M矮星光谱分类基于可见光波段的光谱形态,分为M0到M9十类。
  • magtype 星等类型,有23个类别,用于分类。
  • tsource 已发布巡天目录的来源,可以是人或组织,备注用信息。
  • fibertype 光纤类型,在M矮星中有两类,Obj代表光纤被分配到了目标上, F-std代表光纤用于获取通量校准标准星的光。
  • tfrom 被确认过的巡天目录的来源,结合tsource 使用。
  • t_info 在其他巡天目录的目标编号,比如SDSS, UCAC4, PANSTAR中,结合tfrom使用。

特征工程

对于特征开展进一步分析,并对于数据进行处理。

1. 异常处理

我们用箱线图分析下重点关注的数字特征(SNR和星等)对应预测值(星体子分类)的分布情况。

import itertools

columns = ['snrg','snrr','snri','snrz','snru','mag1','mag2','mag3','mag4','mag5','mag6','mag7']
length  = len(columns)
plt.figure(figsize=(12,36))
for i,j in itertools.zip_longest(columns,range(length)):
    plt.subplot(12,1,j+1)
    sns.lvplot(x=df["subclass"],y=df[i])
不同波段SNR和星等和星体子分类

从数值分布来看,i波段(snri,mag3)和z波段(snrz,mag4)对星体子分类的影响比较明显。异常值则主要分布在snru字段中,从先验知识看这些异常值不影响预测,所以不用处理。

2. 数据分桶

对数字特征进行分桶,相当于将原本连续的数据维度引入了非线性,提示特征的表达能力。

bins=[0,10,15,20]
df1 = pd.cut(df['mag2'], bins)
df2 = df1.value_counts(ascending=True)
print(df2)
#ax = sns.countplot(y = df1, order = df2.index)
#for i,j in enumerate(df2):ax.text(100,i,j,fontsize=20)
对mag2分桶后的数据统计结果

由于需要分析的数据以线性为主,用不到数据分桶。

3. 降维

PCA/ LDA/ ICA

4. 标准归一化

标准化(转换为标准正态分布)
归一化(抓换到 [0,1] 区间)

5. 特征构造

构造统计量特征,报告计数、求和、比例、标准差等;
时间特征,包括相对时间和绝对时间,节假日,双休日等;
地理信息,包括分箱,分布编码等方法;
非线性变换,包括 log/ 平方/ 根号等;

6. 特征筛选

过滤式(filter)
包裹式(wrapper)
嵌入式(embedding)

相关文章

  • LAMOST一期巡天中M矮星的数据挖掘

    LAMOST简介 郭守敬望远镜(LAMOST,大天区面积多目标光纤光谱天文望远镜)是一架新类型的大视场兼备大口径望...

  • R语言rattle可视化包介绍

    一期介绍数据挖掘可视化工具Rattle包,是一个用于数据挖掘的R语言图形交互界面,可以快速处理常见的数据挖掘问题。...

  • 逃脱银河系的两颗恒星

    近期,云南大学我国西南天文研讨所刘晓为教授团组依据LAMOST望远镜大规模银河系光谱巡天,最新发现了两颗距地球7万...

  • 数据挖掘-引论

    一、什么是数据挖掘 数据挖掘指的是从大量数据中挖掘有趣的模式或知识的过程:简称数据中的知识发现(KDD),有如下的...

  • 读了十本书丨Hadoop大数据分析及数据挖掘读书笔记,一文总结

    数据挖掘基础 数据挖掘的概念: 从数据中“淘金”,从大量数据(文本)中挖掘出隐含的、未知的、对决策有潜在的关系、模...

  • 了解数据挖掘

    数据挖掘涉及的方面很广,可以是从数据中挖掘知识,提取知识,数据/模式分析,数据考古和数据捕捞。数据挖掘是从已有数据...

  • 使用Apriori算法挖掘频繁项集

    一、问题描述 频繁模式挖掘搜索给定数据集中反复出现的联系,使用Apriori算法挖掘1M电影数据集中用户喜爱的电影...

  • 数据挖掘

    数据挖掘 数据挖掘,英文名称为Data mining,简称DM。 数据挖掘,它是数据库知识发现中的一个步骤。 数据...

  • 数据挖掘和机器学习在资本市场数据监测中的运用

    数据挖掘和机器学习在资本市场数据监测中的运用 数据挖掘 基本定义 从技术上来看,数据挖掘(Data Mining,...

  • Python数据挖掘入门

    数据挖掘概况 数据挖掘定义 数据挖掘是指从大量的数据中,通过统计学、人工智能、机器学习等方法挖掘出未知的且具有价值...

网友评论

      本文标题:LAMOST一期巡天中M矮星的数据挖掘

      本文链接:https://www.haomeiwen.com/subject/gpuyxktx.html