我是 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_indices
中 mRMR.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/