糖尿病遗传风险检测挑战赛

数据预读

数据集字段说明
  • 编号:标识个体身份的数字;
  • 性别:1表示男性,0表示女性;
  • 出生年份:出生的年份;
  • 体重指数:体重除以身高的平方,单位kg/m2;
  • 糖尿病家族史:标识糖尿病的遗传特性,记录家族里面患有糖尿病的家属,分成三种标识,分别是父母有一方患有糖尿病、叔叔或者姑姑有一方患有糖尿病、无记录;
  • 舒张压:心脏舒张时,动脉血管弹性回缩时,产生的压力称为舒张压,单位mmHg;
  • 口服耐糖量测试:诊断糖尿病的一种实验室检查方法。比赛数据采用120分钟耐糖测试后的血糖值,单位mmol/L;
  • 胰岛素释放实验:空腹时定量口服葡萄糖刺激胰岛β细胞释放胰岛素。比赛数据采用服糖后120分钟的血浆胰岛素水平,单位pmol/L;
  • 肱三头肌皮褶厚度:在右上臂后面肩峰与鹰嘴连线的重点处,夹取与上肢长轴平行的皮褶,纵向测量,单位cm;
  • 患有糖尿病标识:数据标签,1表示患有糖尿病,0表示未患有糖尿病。
解题思路

--------------------------------------------------后补-------------------------------------------------------------------

导入库

import pandas as pd
from sklearn.tree import DecisionTreeClassifier

数据预处理

data1=pd.read_csv('比赛训练集.csv',encoding='gbk') #汉字
data2=pd.read_csv('比赛测试集.csv',encoding='gbk')
#label标记为-1
data2['患有糖尿病标识']=-1 #这是为了方便合并,先给测试集加一个label,-1和0,1区分开
#训练集和测试机合并 (统一做特征工程
data=pd.concat([data1,data2],axis=0,ignore_index=True)

#将舒张压特征中的缺失值填充为-1
data['舒张压']=data['舒张压'].fillna(-1)

特征工程

"""
将出生年份换算成年龄
"""
data['出生年份']=2022-data['出生年份']  #换成年龄


"""
人体的成人体重指数正常值是在18.5-24之间
低于18.5是体重指数过轻
在24-27之间是体重超重
27以上考虑是肥胖
高于32了就是非常的肥胖。

在这里根据BMI范围分类一下
"""
def BMI(a):
    if a<18.5:
        return 0
    elif 18.5<=a<=24:
        return 1
    elif 24<a<=27:
        return 2
    elif 27<a<=32:
        return 3
    else:
        return 4

data['BMI']=data['体重指数'].apply(BMI) # apply函数会自动遍历每一行DataFrame的数据,最后将所有结果组合成一个Series数据结构并返回。
data.head()
#糖尿病家族史
"""
无记录
叔叔或者姑姑有一方患有糖尿病/叔叔或姑姑有一方患有糖尿病
父母有一方患有糖尿病

分为3类
"""
def FHOD(a): # Family History of Diabetes
    if a=='无记录':
        return 0
    elif a=='叔叔或者姑姑有一方患有糖尿病' or a=='叔叔或姑姑有一方患有糖尿病':
        return 1
    else:
        return 2
data['糖尿病家族史']=data['糖尿病家族史'].apply(FHOD)
data['舒张压'].describe()
"""
舒张压范围为60-90
"""
def DBP(a):
    if a<60:
        return 0
    elif 60<=a<=90:
        return 1
    else:
        return 2

data['DBP']=data['舒张压'].apply(DBP)

拆分数据(特征工程结束

#将处理好的特征工程分为训练集和测试集,其中训练集是用来训练模型,测试集用来评估模型准确度
#其中编号和患者是否得糖尿病没有任何联系,属于无关特征予以删除

#根据之前的添加的-1列来拆分训练集和测试集  牛逼
train=data[data['患有糖尿病标识'] !=-1]
test=data[data['患有糖尿病标识'] ==-1]

#标签集
train_label=train['患有糖尿病标识']

#特征集
train=train.drop(['编号','患有糖尿病标识'],axis=1)
test=test.drop(['编号','患有糖尿病标识'],axis=1)
train.head()
#使用决策树方法训练数据集
model = DecisionTreeClassifier() #调过来
model.fit(train, train_label) # 拟合
y_pre=model.predict(test) #拟合完了是吧 给我他吗的测
y_pre #返回一下测试结果

#结果提交
result=pd.read_csv('提交示例.csv')
result['label']=y_pre
result.to_csv('result-de.csv',index=False)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
糖尿病是一种常见的慢性代谢性疾病,遗传因素在其发病过程中起着重要的作用。Python作为一种功能强大的编程语言,可以用来进行糖尿病遗传风险预测。 首先,我们需要收集研究对象的相关信息,包括年龄、性别、家族史、体重指数(BMI)、血压、血糖水平等。这些信息可以通过数据表格或者问卷的形式进行收集。 接下来,我们可以使用Python中的相关数据分析库,如pandas和numpy,对数据进行清洗和预处理。我们可以通过去除缺失值、异常值和离群点等方式,确保数据的准确性和完整性。同时,还可以使用数据可视化技术,如matplotlib和seaborn,将数据以图形的形式展示出来,帮助我们更好地理解数据的分布和关联关系。 然后,我们可以使用Python中的机器学习算法来建立糖尿病遗传风险预测模型。常用的机器学习算法包括逻辑回归、支持向量机、决策树等。我们可以根据数据的特征和需求选择合适的算法,并使用训练集对模型进行训练。 在模型训练完成后,我们可以使用测试集对模型进行评估和验证。通过计算准确率、精确率、召回率等指标,评估模型的性能,并根据需要进行调整和改进。 最后,我们可以使用经过验证的模型对新的个体进行糖尿病遗传风险预测。通过输入个体的相关信息,模型可以预测该个体患糖尿病风险程度。 总之,Python提供了丰富的数据分析和机器学习工具,可以帮助我们进行糖尿病遗传风险的预测。使用Python进行预测可以提高预测的准确性和效率,为糖尿病的预防和治疗提供科学依据和指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

By_Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值