我是R的新用户,并尝试使用 mRMRe R包(mRMR是众所周知的特征选择方法之一)从功能集中获取要素子集。请原谅我的问题是否简单,因为我真的想知道如何修复错误。以下是详细信息。
假设我有一个csv文件( gene.csv ),其功能集包含6个属性([G1.1.1.1]
,[G1.1.1.2]
,[G1.1.1.3]
,{{1 }},[G1.1.1.4]
,[G1.1.1.5]
)和目标类变量[G1.1.1.6]
(' 1'表示正类,' -1'代表负数类)。这是一个示例[Output]
文件:
gene.csv
我试图获得2个属性的最佳特征子集(超过6个属性),并编写了以下R代码。
[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
当我运行此代码时,我收到语句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))
但是,csv文件的每一列中的数据都是实数。那么,如何更改R代码来解决此问题呢?另外,我不确定Error in .local(.Object, ...) :
data columns must be either of numeric, ordered factor or Surv type
语句中target_indices
的值应该是什么,因为我的目标类变量名是&#34; [输出]&#34;在gene.csv文件中。
如果有人能帮助我使用mRMRe R软件包获得基于gene.csv文件的最佳特征子集,我将非常感激。
答案 0 :(得分:0)
我认为它与您的输出列有关,可能属于类integer
。您可以使用class(df[[7]])
。
要根据警告的要求将其转换为numeric
,只需输入:
df[[7]] <- as.numeric(df[[7]])
这对我有用。
至于另一个问题,在阅读文档后,设置target_indices = 7
似乎是正确的选择。
答案 1 :(得分:0)
我通过修改我的代码解决了这个问题,如下所示。
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个特征的索引。