COX回归特征筛选

任务:利用cox筛选出P值小于0.05的特征

数据的格式第一列为标签,第二列为时间,第三列及后为特征

 先想一想,想好了再更新

这里我们先举一个例子:

import pandas as pd
from lifelines import CoxPHFitter

# 创建示例数据集
data = pd.DataFrame({
    'age': [25, 35, 45, 55, 65],
    'pressure': [5, 4, 2, 1, 1],  # 男性和女性的数量
    'white': [7, 4, 6, 4, 3],  # 吸烟和不吸烟的数量
    'time': [5, 10, 15, 20, 25],  # 时间至事件发生或观察截止的时间
    'event': [1, 0, 1, 0, 1]  # 1表示事件发生,0表示事件未发生
})

# 创建 Cox 比例风险模型
cph = CoxPHFitter()

# 拟合模型
cph.fit(data, duration_col='time', event_col='event')

# 获取结果
cph.print_summary()

 这里我们和SPSS中进行一下对比:

 结果是不一样的,我也不知道为什么,等我再使用R语言试试。

 那么就进入今天的任务

先检查一下多重共线性

import pandas as pd

# 加载数据集
data = pd.read_excel(r"C:\Users\Administrator\Desktop\COX_data.xlsx")

# 计算特征之间的相关系数
correlation_matrix = data.corr()

# 打印相关系数矩阵
print("特征之间的相关系数矩阵:")
print(correlation_matrix)

# 选择性排除高度相关的特征
# 假设阈值为0.7,如果相关系数绝对值大于等于0.7,则认为特征高度相关
highly_correlated_features = set()
threshold = 0.7
for i in range(len(correlation_matrix.columns)):
    for j in range(i):
        if abs(correlation_matrix.iloc[i, j]) >= threshold:
            colname = correlation_matrix.columns[i]
            highly_correlated_features.add(colname)

# 打印高度相关的特征
print("\n高度相关的特征:")
print(highly_correlated_features)

 删除掉共线性的特征

# 移除高度相关的特征
data = data.drop(columns=highly_correlated_features)

# 创建并拟合 Cox 回归模型
coxph = CoxPHFitter()
coxph.fit(data, duration_col='time', event_col='label')

# 计算 p 值
p_values = coxph._compute_p_values()
p_values_df = pd.DataFrame(p_values, index=data.columns[2:], columns=['p'])
# 筛选出 p 值小于 0.05 的特征
significant_features = p_values_df[p_values_df['p'] > 0.05]  # 注意修改这里的筛选条件

# 打印筛选结果
print("\nP 值小于 0.05 的特征:")
print(significant_features)

设置一个路径,保存数据

# 获取符合条件的特征名
significant_feature_names = significant_features.index.tolist()

# 保存符合条件的特征数据到新的 CSV 文件
significant_features_data = data[['time', 'label'] + significant_feature_names]
significant_features_data.to_csv(r"C:\Users\Administrator\Desktop\significant_features_data.csv", index=False)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/619292.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

项目管理-计算题公式【复习】

1.【进度】相关公式 1.1三点估算 PERT 三点估算法是基于 任务成本的三种估算值(最可能成本CM,最乐观成本CO,最悲观成本CP)来计算预期成本的方法。 三角 分布:预期成本(最乐观成本最可能成本最悲观成本&am…

RabbitMq出现Not management user问题解决

在RabbitMq登录的时候突然弹出如下图: 提示“当前用户不是管理员用户”进入mq控制命令台下: windows版本在mq安装路径下的sbin下进入cmd弹出框; Linux版本没有测试; 输入以下命令: rabbitmqctl list_users 查询当…

【计算机网络篇】数据链路层(8)共享式以太网的退避算法和信道利用率

文章目录 🛸共享式以太网的退避算法🥚截断二进制指数算法 🍔共享式以太网的信道利用率 🛸共享式以太网的退避算法 在使用CSMA/CD协议的共享总线以太网中,正在发送帧的站点一边发送帧一边检测碰撞,当检测到…

Springboot整合 Spring Cloud Alibaba Sentinel

1.Sentinel介绍 官方文档地址: https://sentinelguard.io/zh-cn/docs/introduction.html https://github.com/alibaba/Sentinel/wiki/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入…

探索共享内存:解锁并发编程的潜力

文章目录 序言shm 原理对shm的理解通过代码认识shm调用shmget方法实现 序言 system V版本 指定的一种规则(俗话说一流公司定规则,二流公司重服务,三流公司重技术).这个规则虽然有很多种(消息队列,共享内存等只是比较出名的几个).但是在内核的相关技术解决上是类似的,因为都是基…

吴恩达 深度学习 神经网络 softmax adam 交叉验证

神经网络中的层:输入层(layer 0)、隐藏层、卷积层(看情况用这个)、输出层。(参考文章) 激活函数: 隐藏层一般用relu函数; 输出层根据需要,二分类用sigmoid&…

Selenium 自动化 —— 一篇文章彻底搞懂XPath

更多关于Selenium的知识请访问“兰亭序咖啡”的专栏:专栏《Selenium 从入门到精通》 文章目录 前言 一、什么是xpath? 二、XPath 节点 三. 节点的关系 1. 父(Parent) 2. 子(Children) 3. 同胞(S…

[Algorithm][回溯][全排列][子集] + 回溯原理 详细讲解

目录 0.原理讲解1.全排列1.题目链接2.算法原理详解3.代码实现 2.子集1.题目链接2.算法原理详解3.代码实现 0.原理讲解 回溯算法通常⽤于解决组合问题、排列问题和搜索问题等回溯算法的基本思想: 从⼀个初始状态开始,按照⼀定的规则向前搜索,…

怎么下载抖音直播视频 怎么解析直播间链接的视频录制保存

尊敬的读者们,你们好!今天我们将探讨一个非常实用的技巧——如何下载直播视频。随着网络技术的发展,直播视频已经成为我们日常生活中不可或缺的一部分。无论是观看比赛、欣赏音乐会还是探索新的美食,直播视频都为我们提供了更直观…

【qt】最快的开发界面效率——混合编程

混合编程 一.准备工作1.创建项目2.添加项目资源 二.ui界面设计1.menuBar菜单栏2.action ▲3.toolBar工具栏4.中心组件 三.代码界面设计1.toolBar添加组件2.statusBar状态栏添加组件 四.完成界面的功能1.对action配置信号槽2.对action转到信号槽3.代码添加的组件手动关联槽函数 …

YOLOv8+CLIP实现图文特征匹配

本文通过结合YOLOv8s的高效物体检测能力与CLIP的先进图像-文本匹配技术,展示了深度学习在处理和分析复杂多模态数据中的潜力。这种技术的应用不仅限于学术研究,还能广泛应用于工业、商业和日常技术产品中,以实现更智能的人机交互和信息处理。…

第四届微调——炼丹

学习地址:Tutorial/xtuner/README.md at main InternLM/Tutorial GitHub 笔记 微调是一种在已有的预训练模型基础上,通过使用新的数据对模型进行进一步优化和调整的技术手段。它的目的是使模型能够更好地适应特定的应用场景和任务需求,进一…

IDEA切换分支

方法一 1、选择要切换分支的module 2、右键,选择git 3、再点击branches 4、可以看到当前module的本地分支(local Branches)及远程分支(Remote Branches)列表。点击你要切换到的分支,Checkout即可。 方法二 1、点击…

MFC编程之设计美丽的对话框

目录 写在前面: Part 1:美美的设计一下计算器的布局 1.描述文字: ​编辑 2.ID: Part 2:美美熟悉一下计算器的工作流程 Part 3:美美设计一下控件功能 1.edit control: 2.相关变量初始化&…

Copilot for Microsoft 365 扩充新增 16 种语言

最近,微软公司发布公告,进一步扩大 Copilot for Microsoft 365 语言支持,新增 16 种,支持的语言总数达到 25 种。 新支持的语言如下: 阿拉伯语 捷克语 丹麦语 荷兰语 芬兰语 希伯来语 匈牙利语 韩语 挪威语&am…

Java面试之分布式篇

分布式锁的实现方案 (1)用数据库实现分布式锁比较简单,就是创建一张锁表,数据库对字段作唯一性约束。加锁的时候,在锁表中增加一条记录即可;释放锁的时候删除锁记录就行。如果有并发请求同时提交到数据库&…

二分判定+选插冒排序+归并快速堆希尔+计数排序

二分力扣题 一&#xff1a;搜索二维矩阵 74. 搜索二维矩阵 按照题意&#xff1a;直接利用二维数组转换成一维数组进行求解 方法一&#xff1a;普通等于的二分查找 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {t…

Shell编程之循环语甸与函数

for 遍历循环 1&#xff09;for 变量 in 取值列表 for i in $(seq 1 10) do 命令序列 .... done 2&#xff09;for ((变量初始值; 变量范围; 变量的迭代方式)) for ((i1; i<10; i)) do 命令序列 .... done IFS for循环取值列表分隔符 set | grep IFS …

SSH常用功能介绍-高级功能

一、介绍 SSH&#xff08;Secure Shell&#xff09;是一种用于远程登录和执行命令的网络协议&#xff0c;它提供了加密的连接&#xff0c;保证了数据的安全性。除了基本的远程登录功能外&#xff0c;SSH还提供了许多高级功能&#xff0c;以下是一些常用的高级功能介绍&#xf…

Redis集群安装

将Redis安装包分别上传到3个文件夹&#xff0c;并解压缩 #编译并指定安装目录 cd /root/usr/local/redis-cluster/redis-7001/redis-6.2.6/ make make PREFIX/root/usr/local/redis-cluster/redis-7001 install # cd /root/usr/local/redis-cluster/redis-7002/redis-6.2.6/ m…