利用逻辑回归判断病人肺部是否发生病变

这篇具有很好参考价值的文章主要介绍了利用逻辑回归判断病人肺部是否发生病变。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

      大家好,我是带我去滑雪!

      判断肺部是否发生病变可以及早发现疾病、指导治疗和监测疾病进展,以及预防和促进肺部健康,定期进行肺部评估和检查对于保护肺健康、预防疾病和提高生活质量至关重要。本期将利用相关医学临床数据结合逻辑回归判断病人肺部是否发生病变,其中响应变量为group(1表示肺部发生病变,0表示正常),特征变量为ESR(表示红细胞沉降率)、CRP(表示C-反应蛋白)、ALB(表示白蛋白)、Anti-SSA(表示抗SSA抗体)、Glandular involvement(表示腺体受累)、gender(表示性别)、c-PSA(cancer-specific prostate-specific antigen)、CA 15-3(Cancer Antigen 15-3)、TH17(Th17细胞)、ANA(代表抗核抗体)、CA125(Cancer Antigen 125)、LDH(代表乳酸脱氢酶)。下面开始使用逻辑回归进行肺部病变判断。

(1)导入相关模块与数据

import pandas as pd

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#导入包
import numpy as np
from scipy.stats import logistic
import matplotlib.pyplot as plt
titanic = pd.read_csv('filename1.csv')
titanic#导入数据

输出结果:

  data.Age impute.data.ESR..mean. impute.data.CRP..mean. impute.data.ALB..mean. impute.data.Anti.SSA..median. impute.data.Glandular.involvement..median. impute.data.Gender..median. impute.data.c.PSA..mean. impute.data.CA153..mean. impute.data.TH17..mean. impute.data.ANA..median. impute.data.CA125..mean. impute.data.LDH..mean. data.group
0 67 21.000000 4.810000 38.692661 0 0 0 0.300000 3.50000 10.330000 1 3.000000 212.210493 0
1 78 33.000000 12.089916 41.100000 0 0 0 0.610931 22.40000 7.465353 1 17.500000 485.000000 0
2 69 24.000000 2.250000 42.700000 0 0 0 0.300000 5.40000 8.020000 0 4.360000 236.000000 0
3 71 43.000000 21.800000 39.200000 0 0 0 0.300000 11.11000 5.500000 1 6.700000 166.000000 0
4 69 20.000000 2.430000 47.600000 3 0 0 0.300000 6.93000 4.310000 0 3.520000 223.000000 0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
954 63 40.274914 2.370000 40.300000 2 0 0 0.430000 6.10000 6.560000 0 7.720000 234.000000 0
955 68 27.000000 3.520000 41.000000 3 0 0 0.320000 7.52000 4.780000 1 7.150000 254.000000 0
956 61 40.274914 12.089916 40.700000 0 0 0 0.610931 12.46303 1.790000 1 9.392344 161.000000 0
957 60 27.000000 35.400000 38.300000 0 0 0 0.200000 7.68000 5.700000 0 9.290000 256.000000 0
958 68 30.000000 2.280000 44.400000 0 0 0 0.200000 5.32000 4.430000 0 4.710000 172.000000 0

959 rows × 14 columns

(2)数据处理

X = titanic.iloc[:,:-1]
y = titanic.iloc[:,-1]
X=pd.get_dummies(X,drop_first = True)
X

(3)划分训练集与测试集

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
X_train, X_test, y_train, y_test =  train_test_split(X,y,test_size=0.2,stratify=None, random_state=0)#划分训练集和测试集

(4)拟合逻辑回归

model =  LogisticRegression(C=1e10)
model.fit(X_train, y_train)

model.intercept_    #模型截距
model.coef_       #模型回归系数

输出结果:

array([[ 0.03899236,  0.00458312,  0.000863  , -0.10140358, -0.09681747,
         0.74167081,  0.56011254,  0.24636358,  0.0226635 , -0.02681392,
         0.4987412 , -0.01932326,  0.00211805]])

(5)使用逻辑回归测试集进行评价分类准确率

model.score(X_test, y_test)

输出结果:

0.6822916666666666

(6)测试集预测所有种类的概率

prob = model.predict_proba(X_test)
prob[:5]

输出结果:

array([[0.71336774, 0.28663226],
       [0.34959506, 0.65040494],
       [0.91506198, 0.08493802],
       [0.24008149, 0.75991851],
       [0.55969043, 0.44030957]])

(7)模型预测

pred = model.predict(X_test)
pred[:5]#计算测试集的预测值,展示前五个值

输出结果:

array([0, 1, 0, 1, 0], dtype=int64)

(8)计算混淆矩阵

table = pd.crosstab(y_test, pred, rownames=['Actual'], colnames=['Predicted'])
table

输出结果:

Predicted 0 1
Actual    
0 99 22
1 39 32

(9)计算基于混淆矩阵诸多评价指标 

print(classification_report(y_test, pred, target_names=['yes', 'no']))

输出结果:

                precision    recall  f1-score   support

         yes       0.72      0.82      0.76       121
          no       0.59      0.45      0.51        71

    accuracy                           0.68       192
   macro avg       0.65      0.63      0.64       192
weighted avg       0.67      0.68      0.67       192

(10)绘制ROC曲线

from scikitplot.metrics import plot_roc
plot_roc(y_test, prob)
x = np.linspace(0, 1, 100)
plt.plot(x, x, 'k--', linewidth=1)
plt.title('ROC Curve (Test Set)')#画ROC曲线
plt.savefig("E:\工作\硕士\博客\squares1.png",
            bbox_inches ="tight",
            pad_inches = 1,
            transparent = True,
            facecolor ="w",
            edgecolor ='w',
            dpi=300,
            orientation ='landscape')

输出结果:

利用逻辑回归判断病人肺部是否发生病变,机器学习之python,逻辑回归,算法,机器学习

 文章来源地址https://www.toymoban.com/news/detail-680638.html

 需要数据集的家人们可以去百度网盘(永久有效)获取:

链接:https://pan.baidu.com/s/1E59qYZuGhwlrx6gn4JJZTg?pwd=2138
提取码:2138 


更多优质内容持续发布中,请移步主页查看。

   点赞+关注,下次不迷路!

 

到了这里,关于利用逻辑回归判断病人肺部是否发生病变的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Unity利用正则表达式判断字符串是否满足要求

    首先该方法属于C#,是C#提供的,不是unity提供的,但我使用这个是在unity中使用的,故此我将其归入unity笔记。 该方式可用于注册、登录等等需要用户输入的场景,用以判断字符串是否满足正则表达式的要求 首先介绍该API 这里开始介绍,大家可以看看官方的文档Regex.IsMatch 方

    2024年01月16日
    浏览(11)
  • 利用java语言中的stream流操作判断一个数组中是否有重复元素

    判断数组中是否有重复元素可以说是每一个编程语言初学者都会遇到的题目,常见的各种搜索算法本文不做赘述了,我们这次介绍的是利用java语言中特有的stream流操作来判断通用类型数组是否包含重复元素。 首先我们声明一个泛型方法: 表明该方法适用于所有类型的数组。

    2024年02月12日
    浏览(13)
  • Python利用逻辑回归分类器对乳腺肿瘤进行良性/恶性预测实战(超详细 附源码)

    Python利用逻辑回归分类器对乳腺肿瘤进行良性/恶性预测实战(超详细 附源码)

    需要源码请点赞关注收藏后评论区留言并且私信~~~ 在本案例中,利用逻辑回归分类器对乳腺肿瘤进行良性/恶行预测,并对预测模型进行指标测算与评价。 本案例数据集采用乳腺癌数据集,原始数据集的下载地址为数据集下载地址 数据特征包括细胞厚度、细胞大小、形状等九

    2024年02月05日
    浏览(17)
  • C 语言 输入一个正整数,程序会利用is_prime函数判断该数是否是素数,如果是素数,输出“%d是素数“,否则输出“%d不是素数“。

    ``` 输入一个正整数,程序会利用is_prime函数判断该数是否是素数,如果是素数,输出\\\"%d是素数\\\",否则输出\\\"%d不是素数\\\"。

    2024年02月11日
    浏览(10)
  • 数据分析之Logistic回归分析(二元逻辑回归、多元有序逻辑回归、多元无序逻辑回归)

    数据分析之Logistic回归分析(二元逻辑回归、多元有序逻辑回归、多元无序逻辑回归)

    在研究X对于Y的影响时: 如果Y为定量数据,那么使用多元线性回归分析; 如果Y为定类数据,那么使用Logistic回归分析。 结合实际情况,可以将Logistic回归分析分为3类: 二元Logistic回归分析 多元有序Logistic回归分析 多元无序Logistic回归分析 Logistic回归分析用于研究X对Y的影响

    2024年03月13日
    浏览(12)
  • 判断css文字发生了截断,增加悬浮提示

    判断css文字发生了截断,增加悬浮提示

    示例: 固定显示宽度,溢出显示...,利用了css的属性,想要实现成下面这样:  针对溢出的文字,hover显示全部。  提示很好加,使用tooltip组件就行了,难点是如何判断是否发生了文字溢出。 利用dom元素的 可视宽度 clientWidth  和 实际宽度 scrollWidth 不同就可以比较出是否发

    2024年02月04日
    浏览(6)
  • 深度学习 -- 逻辑回归 PyTorch实现逻辑回归

    线性回归解决的是回归问题,而逻辑回归解决的是分类问题,这两种问题的区别是前者的目标属性是连续的数值类型,而后者的目标属性是离散的标称类型。 可以将逻辑回归视为神经网络的一个神经元,因此学习逻辑回归能帮助理解神经网络的工作原理。 逻辑回归是一种 广

    2024年02月06日
    浏览(11)
  • 机器学习之回归算法-逻辑回归

    机器学习之回归算法-逻辑回归

    1.1、概念 是一种名为“回归”的线性分类器,是由线性回归变化而来的,一种广泛使用于分类问题中的广义回归算法。 1.2、按预测标签的数据类型分 连续型变量: 通过线性回归方程z,线性回归使用输入的特征矩阵X来输出一组连续型的标签值y_pred,以完成各种预测连续型变

    2024年02月04日
    浏览(15)
  • 深度学习(一),线性回归与逻辑回归

    深度学习(一),线性回归与逻辑回归

            代码是自己敲得,图是自己画的,连公式都是一个一个字打的, 希望赞是你给的(≧◡≦)。         线性回归(Liner Regression),俗称lr。                                                                         一个大家熟悉得不能再熟悉的式子,便是线性回归

    2024年03月25日
    浏览(8)
  • 微信小程序如何判断对象是否为空、判断值是否存在

    微信小程序如何判断对象是否为空、判断值是否存在

    在 js 文件中需要对 data 里一些的对象进行判断是否为空 比如这里我要在页面加载时判断 data 中的 record 是否为空: 在 onload() 方法中使用 Object.key().length0 来判断: Object.keys()方法:将给定对象的所有可枚举属性变成一个字符串数组 解释:将需要判断的对象转换为一个字符

    2024年02月11日
    浏览(89)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包