美文网首页
使用KNN和逻辑回归做心血管疾病预测的理解

使用KNN和逻辑回归做心血管疾病预测的理解

作者: 竹廿金 | 来源:发表于2020-04-23 17:08 被阅读0次

    数据来自Kesci,项目是想通过对患者年龄、性别、血压、血脂、血糖、吸烟史、酗酒史、体育活动等特征,分析心血管疾病的关系,并建立模型。

    加载数据

    Id字段对分析没有太大用处,删除字段。

    查看数据集基本信息,没有发现缺失值,数据不用清洗,直接可做下一步处理。

    使用pandas_profiling做探索预览分析,pandas_profiling这个库挺好,不仅包括各种基本的描述性统计值及可视化,还有对这个项目比较重要的相关性分析及可视化。

    也可以调用函数corr()查看correlation,旨在保留与心血管疾病相关性较大的特征来进行分析。

    分析建模

    前期准备

    划分特征值和目标值

    根据数据背景介绍,了解字段‘cardio’代表是否患有心血管疾病,0表示健康,1表示患病。故设置为目标值。

    切分数据集

    总共7w条数据,切下15%作为测试集。(又学了个函数,在数组前面加一个’ ~ ’,返回一个相反的值,bool或int。)

    划分训练集和验证集

    训练逻辑回归模型

    由于不知道要选取哪些相关性强的特征,才能使模型的精确率达到最高,故设定阈值,让相关性高于阈值的特征保留,并运用到模型训练当中。

    从目前的选取的阈值中看出,相关性高于0.05的时候,模型精确率最高。相关字段为age,weight,ap_hi,ap_lo,cholesterol,gluc。


    训练KNN模型


    特征工程标准化


    利用KNN做优化

    同样在不确定哪些特征能让模型精确率高的情况下,建立循环。同样,不同的K值会对精确率产生影响,做子循环。

    使用np.mean(y_test != pred_j节省了计算精确度的环节。

    根据图示,相关性高于0.05的时候,模型精确度最高。在K值为15到30时候,精确度波动不大。选择15减少计算资源。

    测试集做预测

    重新把阈值0.05和K值15纳入到模型当中。对测试集进行预测。

    小结:两种模型建立的还可以,对患者预测的精确度为72%-73%,对于心血管疾病患者关注年龄、体重、血压、血糖、血脂显得格外的重要。

    gender值1和2哪个代表男性,无法从给定材料中找到。只能通过身高来判断,一般男性都比女性高。在图中可看到,1的身高相较2,右移了很多。判定1为女性。健康的人(cardio为0),男性抽烟的较女性少;患病的人中,较女性多。

    男性抽烟又得心血管疾病的比例是女性的12倍。男性抽烟但没有心血管疾病的比例也是女性的12倍多。其他的比例都相近。

    酗酒的人中,男性是女性的5倍。

    数据中,抽烟的人的年龄中位数比不抽烟的人的年龄中位数小19个月。

    在患病的人当中,抽烟的人的年龄中位数比不抽烟的人的年龄中位数小20个月。

    补充:

    在数据当中,虽然没有缺失值,但是在查看描述性统计是的是,有很多数据都不具有显示意义。比如血压舒张压高于收缩压的。需要去除。

    相关文章

      网友评论

          本文标题:使用KNN和逻辑回归做心血管疾病预测的理解

          本文链接:https://www.haomeiwen.com/subject/xpraihtx.html