kaggle新赛:ICR EDA & Baseline
1. 项目简介
ICR - Identifying Age-Related Conditions是Kaggle中的一个Featured竞赛,2023.8.10截止。
- 赛题链接:https://www.kaggle.com/competitions/icr-identify-age-related-conditions/overview
- 背景:通过对个人病史的综合评估、体检和特定测试,评估其整体健康状况并确定任何与年龄相关的疾病,从而尽早发现潜在问题,以便及时干预和管理与年龄相关的健康问题。以往已经使用XGBoost和随机森林,想要探索更多可能。
- 目的:预测一个人是否患有三种疾病中的任何一种或多种(1),或不患有三种疾病中的任何一种(0)。——二分类问题
- 提交:0/1类的概率
- 评价指标:balanced logarithmic loss
- Score:0.14
- 本文内容:EDA & Baseline
2. 读取数据
- train.csv:训练集
- 617×58,有少量缺失值
- AB~GL:56个匿名健康特征;除了EJ为类别外,其余均为浮点数
- Class:0/1
- greeks.csv:补充元数据,仅适用于训练集。
- Alpha:A-0,B、D、G-1
- Beta, Gamma, Delta:三个实验特征
- Epsilon:数据收集日期,有Unknown
- test.csv:测试集。目标是预测该集合中的受试者属于两个类别中的每个类别的概率。5条
train = pd.read_csv('/kaggle/input/icr-identify-age-related-conditions/train.csv')
greeks = pd.read_csv('/kaggle/input/icr-identify-age-related-conditions/greeks.csv')
test = pd.read_csv('/kaggle/input/icr-identify-age-related-conditions/test.csv')
train的缺失值:
missing_count_by_column = (train.isnull().sum())
print(missing_count_by_column[missing_count_by_column > 0])
将EJ转换为onehot:
# EJ onehot
train['EJ'] = train['EJ'].replace({
'A': 0, 'B': 1})
test['EJ'] = test['EJ'].replace({
'A': 0, 'B': 1})
合并train和greeks:
# 合并train和greeks
train_all = pd.merge(train, greeks, on='Id', how='left')
train_all.set_index('Id', inplace=True)
3. EDA
- 各种特征与Class的分布密度图(KDE):
fig, axes = plt.subplots(nrows=14, ncols=4, figsize=(16, 50))
for i, col_name in enumerate(train.columns.tolist()[1:-1]):
ax = axes[i//4, i%4]
sns.kdeplot(data=train, x=col_name, hue='Class', shade=True, ax=ax, alpha=0.5, linewidth=2)
ax.set_xlabel(col_name, fontsize=14)
ax.set_ylabel('Class', fontsize=14)
ax.legend(