r - 使用 mRMRe 包从功能集中选择功能

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

我是 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][G1.1.1.6] )和一个目标类变量[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 <- mRMR.data(data = data.frame(df)) 的以下错误:

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

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

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

最佳答案

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

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 个特征的索引。

关于r - 使用 mRMRe 包从功能集中选择功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48937143/

相关文章:

python - 如何使用 AutoGrad 包?

python - Pandas - 将具有多个索引的字典映射到列

python - 使用scipy.optimize时如何处理 'residues are not finite in the initial point'?

R 包 "translateR"和 Microsoft API

r - 在 rgdal R 中使用 spTransform 重新投影空间点时出错

python - TensorFlow 数据集 API from_generator 序列结束错误

algorithm - Web 导航模式挖掘/网络聚类算法/Web 流量聚类方法

r - 使用字符串向量输入在 dplyr 中按多列进行分组

r - 有条件地改变值并寻找组合

python - 如何重现从 Hypertools.plot 识别的 Hypertools 集群