栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

糖尿病遗传风险检测挑战赛(Coggle 30 Days of ML)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

糖尿病遗传风险检测挑战赛(Coggle 30 Days of ML)

本次跟着Coggle 30 Days of ML学习算法竞赛,而不是基于现成baseline来操作,预计重新熟悉并学习

  • Pandas、Numpy 处理数据
  • Sklearn、LightGBM 模型使用
  • 构建特征工程、筛选特征
  • NLP模型搭建

数据挖掘比赛为“糖尿病遗传风险检测挑战赛”,比赛报名地址:2022 iFLYTEK A.I.开发者大赛-讯飞开放平台

以下为打卡内容:

任务1:报名比赛
  • 步骤1:报名比赛2022 iFLYTEK A.I.开发者大赛-讯飞开放平台
  • 步骤2:下载比赛数据(点击比赛页面的赛题数据)
  • 步骤3:解压比赛数据,并使用pandas进行读取;
  • 步骤4:查看训练集和测试集字段类型,并将数据读取代码写到博客;
import pandas as pd

train_df = pd.read_csv('./train.csv', encoding='gbk')
test_df = pd.read_csv('./test.csv', encoding='gbk')

print(train_df.shape, test_df.shape)
print(train_df.dtypes, test_df.dtypes)
任务2:比赛数据分析
  • 步骤1:统计字段的缺失值,计算缺失比例;
    • 通过缺失值统计,训练集和测试集的缺失值分布是否一致?
    • 通过缺失值统计,有没有缺失比例很高的列?
  • 步骤2:分析字段的类型;
    • 有多少数值类型、类别类型?
    • 你是判断字段类型的?
    • 在博客中通过文字写出你的判断;
  • 步骤3:计算字段相关性;
    • 通过.corr()计算字段之间的相关性;
    • 有哪些字段与标签的相关性最高?
    • 尝试使用其他可视化方法将字段 与 标签的分布差异进行可视化;
# 缺失值计算
print(train_df.isnull().mean(0))
print(test_df.isnull().mean(0))  # 缺失值分布一致,舒张压列均缺失约4.9%

# 分析字段类型
print(train_df.info())
print(test_df.info())

#计算特征相关性
corr = train_df.corr()
print(corr)

#相关性可视化
import seaborn as sns
import matplotlib.pyplot as plt
# 解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# plt.figure(figsize = (15,10))
heatmap = sns.heatmap(corr,cmap = 'Purples')
plt.show() # 患有糖尿病标识与肱三头肌皮褶厚度、体重指数相关性较高

 

 

任务3:逻辑回归尝试
  • 步骤1:导入sklearn中的逻辑回归;
  • 步骤2:使用训练集和逻辑回归进行训练,并在测试集上进行预测;
  • 步骤3:将步骤2预测的结果文件提交到比赛,截图分数;
  • 步骤4:将训练集20%划分为验证集,在训练部分进行训练,在测试部分进行预测,调节逻辑回归的超参数;
  • 步骤4:如果精度有提高,则重复步骤2和步骤3;
test_df['患有糖尿病标识'] = -1
data = pd.concat([train_df,test_df])

# 字符串转化数字
from sklearn.preprocessing import LabelEncoder
labelencoder = LabelEncoder()
data['糖尿病家族史'] =  labelencoder.fit_transform( data['糖尿病家族史'])

#缺失值填充
data['舒张压'] = data['舒张压'].fillna(data['舒张压'].mean())

#逻辑回归尝试
from sklearn.linear_model import LogisticRegression as LR
X_train = data[data['患有糖尿病标识'] >= 0 ].drop(['患有糖尿病标识','编号'],axis = 1)
y_train = data[data['患有糖尿病标识'] >= 0 ]['患有糖尿病标识']
X_test = data[data['患有糖尿病标识'] < 0 ].drop(['患有糖尿病标识','编号'],axis = 1)
print(X_train.shape,y_train.shape,X_test.shape)  # (5070, 8) (5070,) (1000, 8)

X_train.info()

model = LR()
model.fit(X_train,y_train)
y_test = model.predict(X_test)
test_df['label']=y_test
test_df.rename({'编号':'uuid'},axis = 1)[['uuid','label']].to_csv('submit.csv',index = False)

## 将训练集20%划分为验证集,在训练部分进行训练,在测试部分进行预测,调节逻辑回归的超参数
from sklearn.model_selection import train_test_split
X_train2,X_valid2,y_train2,y_valid2 = train_test_split(X_train,y_train,test_size = 0.2 )
print(X_train2.shape,y_train2.shape,X_valid2.shape,y_valid2.shape)

model = LR()
model.fit(X_train2,y_train2)
y_pred = model.predict(X_valid2)
from sklearn.metrics import f1_score
print(f1_score(y_pred,y_valid2))   #0.75

 

 

任务4:特征工程(使用pandas完成)
  • 步骤1:统计每个性别对应的【体重指数】、【舒张压】平均值
  • 步骤2:计算每个患者与每个性别平均值的差异;
  • 步骤3:在上述基础上将训练集20%划分为验证集,使用逻辑回归完成训练,精度是否有提高?
  • 步骤4:思考字段含义,尝试新的特征,将你的尝试写入博客;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997590.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号