机器学习—逻辑回归算法分析心脏病
发布时间
阅读量:
阅读量
- 算法原理
逻辑回归算法与线性回归方法极为相似。但从本质上说, 线性型回歸處理的问题類型與邏輯回歸並非一致。線性回歸處理的是數值型數據,即使最終預測結果為具體數字,例如房价、銷售額等數據特征。相較之下, 邏輯回歸屬於分類算法,主要處理分類問題—I判断/识别/判定等事件的可能性及其归属类别,例如判斷一封電郵是否為垃圾電郵、用戶是否会點擊某個廣告等—I因而成為一種经典的二分法分類技術。
在实现层面的话,在机器学习领域中
数据属性:
- 年龄:以年为单位表示
- 性别:1代表男性;0代表女性
- 胸痛类型:分为三种类型
- 静息血压(入院时测量)
- 血清胆固醇含量(mg/dl)
- (空腹血糖> 120 mg/dl)(真/假)
- 静息心电图结果
- 达到的最大心率
- (运动诱发心绞痛)(是/否)
- 运动相对于休息诱发的ST型抑郁程度
- 运动阶段ST段的坡度
- (主要血管数)(荧光染色显示0~3条)
- 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)

结果如下图所示:

请查看我的主页以了解如何进行数据收集。如果有编译问题,请随时留言询问。尽管回复可能不及时,请确保您的信息能够被查看。
全部评论 (0)
还没有任何评论哟~
