Advertisement

机器学习—逻辑回归算法分析心脏病

阅读量:
  • 算法原理

逻辑回归算法与线性回归方法极为相似。但从本质上说, 线性型回歸處理的问题類型與邏輯回歸並非一致。線性回歸處理的是數值型數據,即使最終預測結果為具體數字,例如房价、銷售額等數據特征。相較之下, 邏輯回歸屬於分類算法,主要處理分類問題—I判断/识别/判定等事件的可能性及其归属类别,例如判斷一封電郵是否為垃圾電郵、用戶是否会點擊某個廣告等—I因而成為一種经典的二分法分類技術。

在实现层面的话,在机器学习领域中

数据属性:

  1. 年龄:以年为单位表示
  2. 性别:1代表男性;0代表女性
  3. 胸痛类型:分为三种类型
  4. 静息血压(入院时测量)
  5. 血清胆固醇含量(mg/dl)
  6. (空腹血糖> 120 mg/dl)(真/假)
  7. 静息心电图结果
  8. 达到的最大心率
  9. (运动诱发心绞痛)(是/否)
  10. 运动相对于休息诱发的ST型抑郁程度
  11. 运动阶段ST段的坡度
  12. (主要血管数)(荧光染色显示0~3条)
  13. thal:分为三种情况:正常(3)、固定缺损(6)、可逆缺损(7)
    14.(心血管疾病诊断)(冠状动脉造影检查结果)

代码:

复制代码
 #1.数据获取

    
 import pandas as pd
    
 columnnames=["1.age: age in years",
    
 "2. sex: sex (1 = male; 0 = female)",
    
 "3. cp: chest pain type",
    
 "4. trestbps: resting blood pressure (in mm Hg on admission to the hospital)",
    
 "5.chol: serum cholestoral in mg/dl",
    
 "6. bs: (fasting blood sugar > 120 mg/dl) (1 = true; 0 = false)",
    
 "7. restecg: resting electrocardiographic results",
    
 "8. thalach: maximum heart rate achieved",
    
 "9. exang: exercise induced angina (1 = yes; 0 = no)",
    
 "10.oldpeak = ST depression induced by exercise relative to rest",
    
 "11. slope: the slope of the peak exercise ST segment",
    
 "12.ca: number of major vessels (0-3) colored by flourosopy",
    
 "13.  thal: 3 = normal; 6 = fixed defect; 7 = reversable defect",
    
 "num: diagnosis of heart disease (angiographic disease status)"]
    
 df=pd.read_csv("D:\mlData\processed.hungarian 1.data",names=columnnames)
    
 df
    
 # 2.数据处理
    
 #空值填充
    
 #f向前填充 b向后填充
    
 df1.fillna(method='ffill',inplace=True)
    
 #是否存在缺省值
    
 print(df1.isnull().sum())
    
 3.数据集划分
    
 #提取1-13特征值 14目标值
    
 y=df1["num: diagnosis of heart disease (angiographic disease status)"]
    
 x=df1.iloc[:,1:-5]
    
 from sklearn.model_selection import train_test_split
    
 xtrain,xtest,ytrain,ytest=train_test_split(x,y,test_size=0.2,random_state=33)
    
 ytrain
    
 # 4、特征工程--标准化
    
 from sklearn.preprocessing import StandardScaler
    
 #创建标准化对象
    
 transfer=StandardScaler()
    
 #数据集标准化处理
    
 xtrain=transfer.fit_transform(xtrain)
    
 xtrain=transfer.fit_transform(xtest)
    
 xtest
    
 #5.逻辑回归模型训练
    
 from sklearn.linear_model import LogisticRegression
    
 #创建逻辑回归对象
    
 lr= LogisticRegression()
    
 #数据集变型,不变型数据会导致预测时报错
    
 #输出逻辑对象
    
 lr.fit(xtrain,ytrain)
    
 #权重
    
 lr.coef_
    
 #截距
    
 lr.intercept_
    
 # 6.模型评估
    
 ypredict=lr.predict(xtest)
    
 ypredict=ytest
    
 score=lr.score(xtest,ytest)
    
 score
    
 #观测结果分类
    
 from sklearn.metrics import classification_report
    
 report=classification_report(ytest,ypredict,labels=[0,1],target_names=["不患病","患病"])
    
 print(report)
    
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/OVfT9jtn7WlrbvFuSoJMLmN12p68.png)

结果如下图所示:

请查看我的主页以了解如何进行数据收集。如果有编译问题,请随时留言询问。尽管回复可能不及时,请确保您的信息能够被查看。

全部评论 (0)

还没有任何评论哟~