机器学习与python-陈强 第五章逻辑回归课后习题答案

机器学习与python-陈强 第五章逻辑回归课后习题答案

题目

5.1 使用 Hastie etal.(2009)的南非心脏病数据 SAheart.csv 进行逻辑回归”。其中响应变量为chd(是否有冠心病,即coronary heart disease)。特征向量包括sbp(收缩压,即 systolic blood pressure)、tobacco(累计抽烟量)、ldl(低密度脂蛋白胆固醇,即 low densitylipoprotein cholesterol)、因子变量 famhist(是否有家族心脏病史)、typea(A 型行为,即type-Abehavior)、alcoho1(当前饮酒量)、age(发病时年龄),以及两个关于肥胖程度的数值型度量adiposity与obesity。
(1)计算样本中有冠心病的比例。
(2)由于数据包含分类变量,使用命令“x=pd.get_dummies(X)”将数据矩阵X中的分类变量设为虚拟变量。使用“random_state=0”,预留100个观测值作为测试集。
(3)在训练集中,使用skleamn模块的LogisticRegression类(设参数“c=1e10”与“fit intercept=False”),将chd 对其余变量进行逻辑回归。
(4)展示此逻辑回归的回归系数。
(5)计算测试集的预测概率,并展示前5个预测概率。
(6)在测试集中进行预测,计算准确率、错误率、灵敏度、特异度与召回率。
(7)画 ROC 曲线。
(8)计算 AUC。
(9)计算kappa值。

详细代码

1.引入库

代码如下(示例):

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
import statsmodels.api as sm
from patsy import dmatrices
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report
from sklearn.metrics import cohen_kappa_score
from sklearn.metrics import roc_curve, RocCurveDisplay

2.读入数据

代码如下(示例):

SA = pd.read_csv('SAheart.csv')
# 查看数据
SA.head()
X = pd.DataFrame(SA)

# tips
提示:数据文件要和代码文件放在同一文件夹里面

一:计算样本中冠心病的比例

total_count = len(X) #总样本量
chd_count= np.sum(SA.chd) #患病数量
f=chd_count/total_count
print('冠心病比例为',f)

结果:
冠心病比例为 0.3463203463203463

二:将数据矩阵X中的分类变量设为虚拟变量;预留100个观测值作为测试集

X = pd.DataFrame(SA)
X_xuni=pd.get_dummies(X)
#虚拟变量会生成两列,保留一列即可(得冠心病)
X_xuni.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值