竞赛打卡:糖尿病遗传风险检测挑战赛

竞赛打卡:糖尿病遗传风险检测挑战赛

本博客是竞赛学习打卡记录博客。学习地址Coggle七月学习打卡。就是记录在竞赛学习过程中的打卡内容(有可能不会按照内容全部进行打卡,时间可能不是很够)

学习内容

本教程主要是针对糖尿病遗传风险检测挑战赛开展,将讲解数据比赛中具体使用的知识点和细节。 在本次学习中我们将学习特征工程、特征筛选和模型调参过程。
赛题地址:比赛地址

赛题介绍

在这次比赛中,您需要通过训练数据集构建糖尿病遗传风险预测模型,然后预测出测试数据集中个体是否患有糖尿病,和我们一起帮助糖尿病患者解决这“甜蜜的烦恼”。对于测试数据集当中的个体,您必须预测其是否患有糖尿病(患有糖尿病:1,未患有糖尿病:0),预测值只能是整数1或者0。

训练集(比赛训练集.csv)一共有5070条数据,用于构建您的预测模型(您可能需要先进行数据分析)。数据的字段有编号、性别、出生年份、体重指数、糖尿病家族史、舒张压、口服耐糖量测试、胰岛素释放实验、肱三头肌皮褶厚度、患有糖尿病标识(最后一列),您也可以通过特征工程技术构建新的特征。

测试集(比赛测试集.csv)一共有1000条数据,用于验证预测模型的性能。数据的字段有编号、性别、出生年份、体重指数、糖尿病家族史、舒张压、口服耐糖量测试、胰岛素释放实验、肱三头肌皮褶厚度。

0708更新

任务1:报名比赛

步骤1:报名比赛

进入竞赛地址,点击报名即可。
竞赛打卡:糖尿病遗传风险检测挑战赛_第1张图片

步骤2:下载比赛数据(点击比赛页面的赛题数据)

报名完成后,就可以进行数据集的下载了
竞赛打卡:糖尿病遗传风险检测挑战赛_第2张图片

步骤3:解压比赛数据,并使用pandas进行读取;

这个比较简单,直接使用pandas读就行了

import numpy as np
import pandas as pd

train_df = pd.read_csv('data/1/比赛训练集.csv', encoding='gbk')
test_df = pd.read_csv('data/1/比赛测试集.csv', encoding='gbk')

print(train_df)

print(test_df)

竞赛打卡:糖尿病遗传风险检测挑战赛_第3张图片
竞赛打卡:糖尿病遗传风险检测挑战赛_第4张图片

步骤4:查看训练集和测试集字段类型

使用DataFrame的info()函数来查看数据集的字段类型

print(train_df.info())
print(test_df.info())

竞赛打卡:糖尿病遗传风险检测挑战赛_第5张图片

任务2:比赛数据分析

步骤1:统计字段的缺失值,计算缺失比例

缺失值可以用DataFrame里的isnull()来查看,在后面再调用sum()或者mean()可以得到总和以及平均。这里我们想看两个数据集的比例关系,所以mean相对合理一些(因为行数即数据样本数不同)

train_df.isnull().sum() # 这里不方便对比train和test的分布情况,因为总的行数不同,所以建议使用mean()

print(train_df.isnull().mean(0))
print(test_df.isnull().mean(0))

竞赛打卡:糖尿病遗传风险检测挑战赛_第6张图片
可以看到只有一列(舒张压)有缺失值。

步骤2:分析字段的类型

字段类型可以用任务1 的info来查看(可以通过查看Dtype来判断数据类型);还可以进一步用describe()来查看数值列的mean、max等信息。

print(train_df.info())
print(test_df.info())


print(train_df.describe())
print(test_df.describe())

竞赛打卡:糖尿病遗传风险检测挑战赛_第7张图片
竞赛打卡:糖尿病遗传风险检测挑战赛_第8张图片

步骤3:计算字段相关性

计算相关性可以用corr()来计算;可视化我一般使用sns.heatmap();当然也可以用打卡内容汇总里面提示的那几个图像

## 1) 相关性分析
price_numeric = train_df.copy()
correlation = price_numeric.corr()
print(correlation['患有糖尿病标识'].sort_values(ascending = False),'\n')

import matplotlib.pyplot as plt
import seaborn as sns

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

f , ax = plt.subplots(figsize = (7, 7))

plt.title('数据与是否患病的Correlation',y=1,size=16)

sns.heatmap(correlation,square = True,  vmax=0.8)

竞赛打卡:糖尿病遗传风险检测挑战赛_第9张图片
这样就比较清晰得看出数值列和是否患病 的相关性(这里有一列非数值没考虑,可以尝试将其独热编码后再进行相关性分析)

也可以用打卡汇总中提示的这几个图(记得分开,不然画到一起,就不知道要怎么看了。。。)

# train_df['性别'].value_counts().plot(kind='barh')

sns.countplot(x='患有糖尿病标识', hue='性别', data=train_df) # 条形图

# sns.boxplot(y='出生年份', x='患有糖尿病标识', hue='性别', data=train_df) #箱线图

# sns.violinplot(y='体重指数', x='患有糖尿病标识', hue='性别', data=train_df)

竞赛打卡:糖尿病遗传风险检测挑战赛_第10张图片

0708 end

今天先打卡前两个任务。

你可能感兴趣的:(结构化数据竞赛,人工智能,大数据)