在R中使用mRMRe

RDi*_*zl3 2 r machine-learning feature-selection

我目前正在开展一个项目,我必须做一些功能选择来构建预测模型.我被引导到R中的一个包叫mRMRe.我只是想尝试这个例子但是无法让它工作.这个例子可以在这里找到 - http://www.inside-r.org/packages/cran/mRMRe/docs/mRMR.ensemble.

这是我的代码 -

data(cgps)
data <- data.frame(target=cgps.ic50, cgps.ge)
mRMR.ensemble(data, 1, rep.int(1, 30))
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我收到错误 -

Error in .local(.Object, ...) : data must be of type mRMRe.Data.
Run Code Online (Sandbox Code Playgroud)

我进一步挖了一个垃圾,发现你实际上必须将数据转换成mRMR.Data类型.所以我做了这个更新 -

# Update
data <- mRMR.data(data = data.frame(target=cgps.ic50, cgps.ge))
mRMR.ensemble(data, 1, rep.int(1, 30))
Run Code Online (Sandbox Code Playgroud)

但我仍然得到同样的错误.当我看到我有的课 -

> class(data)
[1] "mRMRe.Data"
attr(,"package")
[1] "mRMRe" 
Run Code Online (Sandbox Code Playgroud)

所以数据是请求的类型,但代码仍然不起作用.

我的问题是,如果有人有使用此软件包的经验或任何帮助或评论将不胜感激!

还要注意在链接的例子中 - 当我加载数据时

cgps_ic50 -> cgps.ic50
cgps_ge -> cgps.ge
Run Code Online (Sandbox Code Playgroud)

所以数据的名称与示例中的名称不同.

小智 5

使用您编写的代码:

data(cgps)
data <- mRMR.data(data = data.frame(target=cgps.ic50, cgps.ge))
mRMR.ensemble(data, 1, rep.int(1, 30))
Run Code Online (Sandbox Code Playgroud)

函数mRMR.ensemble将数据作为第一个参数,但此函数中的默认第一个参数是solution_count.

我知道您执行该示例的意图是使用经典的mRMR特征选择算法找到30个相关和非冗余的特征,所以试试这个:

data(cgps)
data <- mRMR.data(data = data.frame(target=cgps.ic50, cgps.ge))
mRMR.ensemble(data = data, target_indices = 1, 
              feature_count = 30, solution_count = 1)
Run Code Online (Sandbox Code Playgroud)

的target_indices是在用于最大化相关性(相关或其他质量度量针对此问题)的特征的原始data.frame的位置,从而在所述经选择的端部将是良好的用于说明target_indices指出的特征.例如,在分类问题中,我们将选择类变量的位置作为target_indices参数的值.

feature_count参数指示要选择的变量数.

solution_count不是经典mRMR的参数.它表示要组合以获得最终特征选择的mRMR算法的数量,因此如果设置为1,则它仅执行一个经典mRMR.