【问题标题】:Selecting features from a feature set using mRMRe package使用 mRMRe 包从特征集中选择特征
【发布时间】:2018-02-22 21:05:20
【问题描述】:

我是 R 的新用户,并尝试使用 mRMRe R 包(mRMR 是一种很好且众所周知的特征选择方法)从特征集中获取特征子集。如果我的问题很简单,请原谅,因为我真的想知道如何修复错误。下面是详细内容。

假设,我有一个 csv 文件 (gene.csv) 具有 6 个属性([G1.1.1.1][G1.1.1.2][G1.1.1.3][G1.1.1.4][G1.1.1.5]、@ 987654326@)和一个目标类变量[Output]('1'表示正类,'-1'代表负类)。这是一个示例gene.csv 文件:

[G1.1.1.1]  [G1.1.1.2]  [G1.1.1.3]  [G1.1.1.4]  [G1.1.1.5]  [G1.1.1.6] [Output]
11.688312   0.974026    4.87013     7.142857    3.571429    10.064935    -1
12.538226   1.223242    3.669725    6.116208    3.363914    9.174312      1
10.791367   0.719424    6.115108    6.47482     3.597122    10.791367    -1
13.533835   0.37594     6.766917    7.142857    2.631579    10.902256     1
9.737828    2.247191    5.992509    5.992509    2.996255    8.614232     -1
11.864407   0.564972    7.344633    4.519774    3.389831    7.909605     -1
11.931818   0           7.386364    5.113636    3.409091    6.818182      1
16.666667   0.333333    7.333333    4.333333    2           8.333333     -1

我正在尝试获得 2 个属性(以上 6 个属性中)的最佳特征子集,并编写了以下 R 代码。

library(mRMRe)
file_n<-paste0("E:\\gene", ".csv")
df <- read.csv(file_n, header = TRUE)
f_data <- mRMR.data(data = data.frame(df))
featureData(f_data)
mRMR.ensemble(data = f_data, target_indices = 7, 
              feature_count = 2, solution_count = 1)

当我运行此代码时,我收到语句 f_data &lt;- mRMR.data(data = data.frame(df)) 的以下错误:

Error in .local(.Object, ...) : 
  data columns must be either of numeric, ordered factor or Surv type

然而,csv文件每一列的数据都是实数。那么,我该如何更改R代码来解决这个问题呢?另外,我不确定语句mRMR.ensemble(data = f_data, target_indices = 7,feature_count = 2, solution_count = 1)target_indices 的值应该是什么,因为我的目标类变量名称是gene.csv 文件中的“[Output]”。

如果有人能帮助我使用 mRMRe R 包根据gene.csv 文件获得最佳特征子集,我将不胜感激。

【问题讨论】:

    标签: r machine-learning data-science feature-selection


    【解决方案1】:

    我通过如下修改代码解决了这个问题。

    library(mRMRe)
    file_n<-paste0("E:\\gene", ".csv")
    df <- read.csv(file_n, header = TRUE)
    df[[7]] <- as.numeric(df[[7]])
    f_data <- mRMR.data(data = data.frame(df))
    results <- mRMR.classic("mRMRe.Filter", data = f_data, target_indices = 7,
                           feature_count = 2)
    solutions(results)
    

    效果很好。代码的输出给出了所选 2 个特征的索引。

    【讨论】:

      【解决方案2】:

      我认为这与您的输出列有关,该列可能属于 integer 类。您可以使用class(df[[7]]) 进行检查。

      要将其转换为警告要求的numeric,只需键入: df[[7]] &lt;- as.numeric(df[[7]])

      这对我有用。

      关于另一个问题,在阅读文档后,设置target_indices = 7 似乎是正确的选择。

      【讨论】:

      • 感谢您的帮助!
      猜你喜欢
      • 2016-03-16
      • 1970-01-01
      • 2018-10-03
      • 2020-07-31
      • 1970-01-01
      • 2013-02-21
      • 2011-01-10
      相关资源
      最近更新 更多