Bohrium
robot
新建

空间站广场

论文
Notebooks
比赛
课程
Apps
我的主页
我的Notebooks
我的论文库
我的足迹

我的工作空间

任务
节点
文件
数据集
镜像
项目
数据库
公开
AI4S Cup 学习赛--超导体临界温度预测 Baseline
中文
notebook
AI4S
中文notebookAI4S
Letian
更新于 2024-08-29
推荐镜像 :Basic Image:bohrium-notebook:2023-04-07
推荐机型 :c2_m4_cpu
赞 2
87
34
Baseline-AI4S Superconductor(v1)

超导体临界温度预测

©️ Copyright 2024 @ Authors
作者:陈乐天 📨
日期:2024-05-14
共享协议:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
快速开始:你可以点击界面上方蓝色按钮 开始连接 ,选择 Basic image : `bohrium-notebook:2023-04-07 ` ` c2_m4_cpu`节点配置. 稍等片刻即可运行。

代码
文本

背景介绍

超导体是那些在低于某一特定温度(称为临界温度)时电阻突然降至零的材料。这种材料的发现和研究对于科学和工程领域都极为重要,因为它们在能源传输、磁体技术以及各种高科技应用中有着潜在的革命性应用。

竞赛目的

本次比赛的目标是通过机器学习模型来预测超导材料的临界温度。准确的预测不仅可以加深我们对物质超导性质的理解,还可以指导实验科学家在新材料的研发过程中做出更有信息的决策,具有重大的科研和实际应用价值。

数据集

本赛题使用的数据集来自真实数据,包含了 个超导体样本,每个样本详细记录了其化学配方,我们给出了其中 个数据的实测的临界温度,其他数据作为测试集数据。参赛者将基于这些数据构建模型,预测超导体的临界温度。

训练集数据superconductor-train.csv

测试集数据(无标签)superconductor-test-no-label.csv

评分使用的镜像

ai4s-cup:0.3

查看镜像信息

代码
文本

本文提供了一个Baseline模型,旨在引导参赛选手在此基础上使用其他的算法,并且探索特征工程、模型调整和参数优化等策略。

1. 数据探索与准备

代码
文本

1.1 读取数据

训练数据集包含超过 种超导材料的特性,包括化学组成、原子特性和历史测量的临界温度值等。每种材料的特性都来自详细的实验测量和计算机模拟。

代码
文本
[1]
import pandas as pd

data_path = '/bohr/Superconductor-data-bn10/v1/'
data = pd.read_csv(f'{data_path}superconductor-train.csv')

# 打印数据总量
print("Total number of data points:", data.shape[0])
print("-"*80)
# 显示前五行数据
print(data.head())
Total number of data points: 17010
--------------------------------------------------------------------------------
     ele-a1  ele-a2  ele-a3  ele-a4  ele-a5  ele-a6  ele-a7  ele-a8    ele-a9  \
0  0.000000     0.0     0.0     0.0     0.0     0.0     0.0     0.0  0.000000   
1  0.000000     0.0     0.0     0.0     0.0     0.0     0.0     0.0  0.000000   
2  0.000000     0.0     0.0     0.0     0.0     0.0     0.0     0.0  0.000000   
3  0.000000     0.0     0.0     0.0     0.0     0.0     0.0     0.0  0.695904   
4  0.467728     0.0     0.0     0.0     0.0     0.0     0.0     0.0  0.000000   

   ele-a10  ...  ele-a78  ele-a79  ele-a80  ele-a81  ele-a82  ele-a83  \
0      0.0  ...      0.0      0.0      0.0      0.0      0.0      0.0   
1      0.0  ...      0.0      0.0      0.0      0.0      0.0      0.0   
2      0.0  ...      0.0      0.0      0.0      0.0      0.0      0.0   
3      0.0  ...      0.0      0.0      0.0      0.0      0.0      0.0   
4      0.0  ...      0.0      0.0      0.0      0.0      0.0      0.0   

   ele-a84  ele-a85  ele-a86           y  
0      0.0      0.0      0.0    6.325695  
1      0.0      0.0      0.0  122.718485  
2      0.0      0.0      0.0   78.565131  
3      0.0      0.0      0.0   75.908341  
4      0.0      0.0      0.0    5.060556  

[5 rows x 87 columns]
代码
文本
  • 数据统计

统计一下目标变量(临界温度)的数据分布。

代码
文本
[2]
import seaborn as sns
import matplotlib.pyplot as plt

sns.histplot(data['y'])
plt.title('Distribution of Critical Temperatures')
plt.xlabel('Temperature (K)')
plt.ylabel('Density')
plt.show()
代码
文本

1.2 数据可视化

对数据进行初步的可视化,了解各特征之间的关系。

代码
文本
[3]
# 选择86个元素作为特征
element_data = data.iloc[:, :86] # 选择前86个特征,调整这里以确保它们是元素特征

# 计算不同元素之间的相关系数矩阵
correlation_matrix = element_data.corr()

# 使用seaborn绘制热图
plt.figure(figsize=(15, 12)) # 设置图像大小
sns.heatmap(correlation_matrix, annot=False, cmap='coolwarm', linewidths=.5)
plt.title('Correlation Matrix for the First 86 Elements')
plt.show()
代码
文本

相关系数矩阵热图显示,作为数据特征的 种元素内几乎没有强相关性的元素,其中空白的行列表示该所有的材料中元素值都不含有该元素。

代码
文本

1.3 划分数据集

划分特征与标签

代码
文本
[4]
from sklearn.model_selection import train_test_split

X = data.drop('y', axis=1).values
y = data["y"].values
代码
文本
  • 查看一下特征与标签的数据大小
代码
文本
[5]
X.shape, y.shape
((17010, 86), (17010,))
代码
文本

划分训练集与验证集

由于我们只有完整的训练集数据,因此可将用于训练的数据集再次分割成两部分:训练集和验证集。

  • 训练集(Training set):用于模型训练,通过这部分数据,模型学习识别数据中的模式和关系。
  • 验证集(Validation set):用于模型验证,这部分数据帮助评估模型的性能,检查模型是否存在过拟合,及其在未见数据上的表现如何。

划分的目的

  • 评估模型泛化能力:通过在未参与训练的数据上测试模型,可以评估其泛化到新数据的能力。
  • 调整模型参数:使用验证集可以安全地调整模型的参数(如学习率、层数、节点数等),而不会泄露测试集的信息。
  • 防止过拟合:如果仅用训练集进行训练和测试,模型可能会过度学习训练数据中的细节和噪声,即过拟合。验证集提供了一种检测过拟合的手段。
代码
文本
[6]
# 划分训练集与验证集
X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size=0.2, random_state=42)
代码
文本

2. 建模与评估

2.1 建模部分

本文选择最基础的线性回归模型作为Baseline。

代码
文本
[7]
from sklearn.linear_model import LinearRegression

linear = LinearRegression()
linear.fit(X_train, y_train)
LinearRegression()
代码
文本

2.2 模型评估

计算验证集的平均绝对误差(MAE)和决定系数(R²),以评估模型的性能。

代码
文本
[8]
from sklearn.metrics import mean_absolute_error, r2_score
import matplotlib.pyplot as plt

# 计算验证集的预测结果和性能指标
y_valid_pred = linear.predict(X_valid)
valid_mae = mean_absolute_error(y_valid, y_valid_pred)
valid_r2 = r2_score(y_valid, y_valid_pred)
print('MAE for valid data:', valid_mae)
print('R2 for valid data:', valid_r2)
MAE for valid data: 20.243692641314233
R2 for valid data: 0.5715900226661013
代码
文本
[9]
# 计算训练集的预测结果和性能指标
y_train_pred = linear.predict(X_train)
train_mae = mean_absolute_error(y_train, y_train_pred)
train_r2 = r2_score(y_train, y_train_pred)
print('MAE for training data:', train_mae)
print('R2 for training data:', train_r2)
MAE for training data: 19.77167207210659
R2 for training data: 0.6142714090038274
代码
文本
[10]
# 绘制训练集和验证集的预测值和实际值
plt.figure(figsize=(8, 8))
plt.scatter(y_train, y_train_pred, alpha=0.5, color='blue', s=10, label='Training data') # 训练集用蓝色点
plt.scatter(y_valid, y_valid_pred, alpha=0.5, color='red', s=10, label='Validation data') # 验证集用红色点
plt.plot([-100, 400], [-100, 400], 'k--', lw=2) # 绘制对角线
plt.xlabel('Actual')
plt.ylabel('Predicted')
plt.title('Actual vs. Predicted')
plt.xlim(-100, 400)
plt.ylim(-100, 400)
plt.legend()
plt.show()
代码
文本

根据上图中对训练集与验证集数据的预测结果可知,线性模型的表达能力很一般。原始数据的临界温度范围在 ~ 之间,而线性模型预测的临界温度部分已经低于 (显然不符合物理规律)。

代码
文本

3. 预测与结果提交

3.1 对测试集进行预测

加载没有标签的测试数据,使用训练好的模型进行预测。

代码
文本
[11]
test_data = pd.read_csv(f'{data_path}superconductor-test-no-label.csv')
X_test = test_data.values
y_test_pred = linear.predict(X_test)
代码
文本

3.2 保存预测结果

请确保!!!保存测试集数据预测的结果的文件名为submission.csv,列名为test_pre_y

运行下面的代码即可按照格式要求保存提交文件。

代码
文本
[12]
pd.DataFrame(y_test_pred, columns=['test_pre_y']).to_csv('submission.csv', index=False)
代码
文本

4. 参考资料

更多算法使用方法与参数搜索技巧请参见bohrium课程《机器学习辅助材料模拟实践》

代码
文本
中文
notebook
AI4S
中文notebookAI4S
已赞2
本文被以下合集收录
学习赛
凡夫俗子
更新于 2024-08-05
2 篇0 人关注
AI4S
微信用户5Kxg
更新于 2024-05-26
2 篇0 人关注
推荐阅读
公开
AI4S Cup 学习赛--超导体临界温度预测 tensor
中文notebookAI4S
中文notebookAI4S
Waytogo
发布于 2024-05-20
公开
AI4S Cup 学习赛--超导体临界温度预测 adaboostregressor
中文notebookAI4S
中文notebookAI4S
Waytogo
发布于 2024-05-20
2 转存文件