基于逻辑回归算法的心脏病不平衡数据分类代码实现

1.数据说明

数据来源Kaggle网站中引用的CDC数据,原数据大概有300个变量,这里大约使用20个,严重不平衡数据,约为1:9。该代码通过对进行清洗,标准化,欠采样(Undersampling)进行数据对平衡工作,进行特征分析,最后用逻辑回归、随机森林、决策树、高斯贝叶斯算法进行模型的构建和对心脏病进行预测,进行了四种算法的比较,最后通过逻辑回归算法得到最好的效果。也印证了原数据集通过权重或欠采样以及逻辑回归的理论。代码已上传到Github。

2.数据预处理

(1)因为只有一组数据,所以我将其1:1划分为数据集和验证集(目的只是想如果后面用对其做标签,最后实际用train_test_split()函数的test_size实现)

(2)确定数据大小

共319794条数据 19列变量

(3)确定各变量的种类数

(4)确定各变量的type以便接下来的数据处理

 

对于浮点型(float)的数据,我们可以看一下数据分布

(5)数据清洗

因为是kaggle的clean数据,因此不需要删除空值,具体实现如上。

(6)HeartDisease 是我们的分类最终结果 也就是y值 需要转换成float类型

(7)把特征编码 将特征转换为数字形式,类似于one-hot 在这里不使用array数组,因为没必要。

3.特征分析 

heatmap图:

  1. 不平衡数据的欠采样 将两个类别变为1:1

5.数据标准化

6.模型构建

固定random_state后,每次构建的模型是相同的、生成的数据集是相同的、每次的拆分结果也是相同的

7.分类预测

可以得到逻辑回归的roc_auc值最高,因此选择逻辑回归模型完成分类预测。

你可能感兴趣的:(机器学习,python,逻辑回归,分类)