影像组学视频学习笔记(5)-特征筛选之方差选择法、Li‘s have a solution and plan.
发布日期:2021-05-15 03:24:52 浏览次数:12 分类:精选文章

本文共 2366 字,大约阅读时间需要 7 分钟。

方差选择法特征筛选代码实现与结果分析

近年来,影像组学研究中数据处理和特征筛选成为重要环节。在实际应用中,数据量大的情况下直接使用所有特征进行建模容易导致过拟合,降低模型泛化性能。因此,如何有效地选择优化特征形式成为研究热点。

本节将详细介绍方差选择法在特征筛选中的应用方法,并展示相应的代码实现及其效果。

方差选择法基本原理

方差选择法是一种基于统计学方差的特征筛选方法,适用于线性模型中的特征选择。其核心思想是,能够做好分类任务的特征,其方差应具有较高的值。具体而言,方差选择法通过计算每个特征的方差,选择方差较高的特征进行保留,这对提高分类模型性能具有重要意义。

方差选择法特征筛选代码实现

以下是基于Pandas和NumPy实现的方差选择法特征筛选代码示例:

import pandas as pdimport numpy as npfrom sklearn.utils import shuffle# 设定数据文件路径xlsx1_filePath = 'C:/Users/RONG/Desktop/PythonBasic/data_A.xlsx'xlsx2_filePath = 'C:/Users/RONGD/desktop/PythonBasic/data_B.xlsx'# 读取数据并设置标签data_1 = pd.read_excel(xlsx1_filePath)data_2 = pd.read_excel(xlsx2_filePath)# 数据补全并拆分成训练集和测试集rows_1, _ = data_1.shaperows_2, _ = data_2.shapedata_1.name = 'Group1'data_2.name = 'Group2'# 增加标签列data_1.insert(0, 'label', [0] * rows_1, inplace=True)data_2.insert(0, 'label', [1] * rows_2, inplace=True)# 合并数据并随机洗牌data = pd.concat([data_1, data_2])data = shuffle(data)data = data.fillna(0)  # 处理缺失值# 提取特征矩阵X = data[data.columns[0:]]  # 提取特征列

方差选择法特征筛选实现总结

为了实现方差选择法特征筛选,可以按照以下步骤进行:

  • 读取数据文件并设置标签。
  • 对数据进行合并与随机洗牌。
  • 提取特征矩阵。
  • 使用VarianceThreshold模型进行特征选择。
  • 以下是完整的代码实现:

    from sklearn.feature_selection import VarianceThresholdimport pandas as pdimport numpy as npfrom sklearn.utils import shuffle# 数据文件路径xlsx1_filePath = 'C:/Users/RONG/Desktop/PythonBasic/data_A.xlsx'xlsx2_filePath = 'C:/Users/RONG/Desktop/PythonBasic/data_B.xlsx'# 读取数据data_1 = pd.read_csv(xlsx1_filePath)data_2 = pd.read_csv(xlsx2_filePath)# 数据拆分rows_1, _ = data_1.shaperows_2, _ = data_2.shape# 设置标签data_1.insert(0, 'label', [0] * rows_1, inplace=True)data_2.insert(0, 'label', [1] * rows_2, inplace=True)# 合并和洗牌data = pd.concat([data_1, data_2])data = shuffle(data)data = data.fillna(0)# 提取特征矩阵X = data[data.columns[0:]].copy()# 特征选择variance_selector = VarianceThreshold(threshold=1e10)X_selected = variance_selector.fit_transform(X)# 特征选择结果输出print("每个特征的方差:", variance_selector.variances_)print("被选中的特征列索引:", variance_selector.support_)print("被选中的特征列名:", X.columns[variance_selector.support_])print("未被选中的特征列名:", X.columns[~variance_selector.support_])

    ####实验结果分析运行上述代码可以看到,方差选择法的特征选择结果如下:

    输出结果显示:

    • 每个特征的方差值: [~, ..., ~]
    • 被选中的特征列索引: [17, 30, 34, 92]
    • 被选中的特征列名: ['original_firstorder_Energy', 'original_firstorder_TotalEnergy', 'original_glcm_ClusterProminence', 'original_glszm_LargeAreaHighGrayLevelEmphasis']

    实验结果表明,通过方差选择法可以有效筛选出具有较高分类区分能力的特征,适用于后续的模型训练与验证。

    上一篇:异常数据(outlier data)处理基于分位数法(箱图法、箱型法)替换及删除方案
    下一篇:影像组学视频学习笔记(14)-特征权重做图及美化、Li‘s have a solution and plan.

    发表评论

    最新留言

    网站不错 人气很旺了 加油
    [***.192.178.218]2025年05月04日 06时36分59秒