深度学习用于医学预后-第二课第四周1-4节随堂作业

作业名:C2_W4_lecture.ipynb

作业地址:
github --> bharathikannann/AI-for-Medicine-Specialization-deeplearning.ai --> AI for Medical Prognosis --> Week 4

One-hot encode categorical variables

首先我们来看一下哪些特征是分类特征?

import pandas as pd
df = pd.DataFrame({'ascites': [0,1,0,1],
                   'edema': [0.5,0,1,0.5],
                   'stage': [3,4,3,4],
                   'cholesterol': [200.5,180.2,190.5,210.3]
                  })
df


在这个小样本数据集中,“腹水”、“水肿”和“分期”是分类变量

  • 腹水(ascites): 取值为0或1
  • 水肿(edema):值为0、0.5或1
  • 阶段(stage):是3或4
    “胆固醇”(cholesterol)是一个连续变量,因为它可以是大于零的任何十进制值。

哪些分类变量要进行one-hot编码?

在分类变量中,哪一个应该进行 one-hot 编码(变成虚拟变量)?

  • 腹水:已经是0或1,所以没有必要进行 one-hot 编码。
    • 我们可以对腹水进行 one-hot 编码,但当只有两个可能的值是0或1时,就没有必要了
    • 当值为0或1时,1意味着存在疾病,而0意味着正常(无疾病)。
  • 水肿: 水肿是指身体任何部位的肿胀。这个数据集的 "水肿 "特征有3个类别,所以我们要对它进行one-hot编码,使三个可能的值都有一个特征列。
    • 0:无水肿
    • 0.5:患者有水肿,但没有接受利尿剂治疗(用于治疗水肿)
    • 1:患者有水肿,接受了利尿剂治疗(所以病情可能更严重)。
  • 阶段:有3和4的值。我们要对这些进行one-hot编码,因为它们不是0或1的值。
    • 癌症的 "阶段 "是0、1、2、3或4。
    • 0期意味着没有癌症。
    • 第1阶段是仅限于身体的一个小区域的癌症,也被称为 “早期癌症”
    • 第2阶段是已经扩散到附近组织的癌症
    • 第3阶段是已经扩散到附近组织的癌症,但比第2阶段更严重
    • 第4阶段是已经扩散到身体远处的癌症,也被称为 “转移性癌症”。
    • 为了训练模型,我们可以将第3阶段转换成0,第4阶段转换成1。这可能会让审查我们代码和数据的人感到困惑。我们将对 "阶段 "进行one-hot。-实际上你会看到,我们最终用0代表第3阶段,1代表第4阶段(见下一节)。

one-hot 特征的多重共线性

让我们看看当我们对“阶段”特征进行one-hot编码时会发生什么?

df_stage = pd.get_dummies(data=df,
               columns=['stage']
              )
df_stage[['stage_3','stage_4']]


你注意到“stage_3”和“stage_4”特征有什么不同?

考虑到stage只有stage_3和stage_4这两个可能的值,
如果你知道病人0(第0行)的stage_3的值为1,那么你可以说些什么关于该病人的stage_4特征的值?

  • 当stage_3为1时,stage_4必须为0;
  • 当stage_3为0时,stage_4必须为1。
    这意味着其中一个特征列实际上是多余的。我们应该删除这些特征中的一个,以避免多重共线性(其中一个特征可以预测另一个特征)。
    可以使用下面方法
df_stage_drop_first = df_stage.drop(columns='stage_3')

也可以直接在刚才的地方添加新的参数drop_first

df_stage = pd.get_dummies(data=df,
               columns=['stage'], drop_first=True,
              )
df_stage

pd.get_dummies函数有多个参数,下面列举其中几个常用的参数:

  • data:要进行编码的DataFrame或Series对象;
  • columns:指定要编码的列名,可以是单个列名或列名列表;
  • prefix:为生成的哑变量列添加指定的前缀;
  • prefix_sep:用于在前缀和列名之间添加分隔符的字符串;
  • dummy_na:指定是否在生成的哑变量中包含缺失值,默认为False;
  • drop_first:指定是否删除生成哑变量的第一列,以避免多重共线性,默认为False;
  • dtype:生成的哑变量的数据类型。

这些参数可以根据需要进行设置,以满足不同的数据分析和机器学习任务的需求。

Hazard function

风险函数的公式为:
λ ( t , x ) = λ 0 ( t ) e θ T X i \lambda(t, x) = \lambda_0(t)e^{\theta^T X_i} λ(t,x)=λ0(t)eθTXi
这样我们就有了变量 X i X_i Xi中的特征的系数 θ \theta θ
如果你有一个新的病人,我们可以预测他们的风险函数 λ ( t , x ) \lambda(t,x) λ(t,x)


文章持续更新,可以关注微信公众号【医学图像人工智能实战营】获取最新动态,一个关注于医学图像处理领域前沿科技的公众号。坚持已实践为主,手把手带你做项目,打比赛,写论文。凡原创文章皆提供理论讲解,实验代码,实验数据。只有实践才能成长的更快,关注我们,一起学习进步~

我是Tina, 我们下篇博客见~

白天工作晚上写文,呕心沥血

觉得写的不错的话最后,求点赞,评论,收藏。或者一键三连
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u014264373/article/details/130736937