我目前正在进行一个项目,需要进行特征选择来构建预测模型。我被引导到一个名为mRMRe
的R包。我只是尝试运行示例,但无法使其工作。示例可以在这里找到。
这是我的代码 –
data(cgps)data <- data.frame(target=cgps.ic50, cgps.ge)mRMR.ensemble(data, 1, rep.int(1, 30))
当我运行这段代码时,我得到了以下错误 –
Error in .local(.Object, ...) : data must be of type mRMRe.Data.
我进一步研究后发现,实际上需要将数据转换为mRMR.Data
类型。所以我做了以下更新 –
# Updatedata <- mRMR.data(data = data.frame(target=cgps.ic50, cgps.ge))mRMR.ensemble(data, 1, rep.int(1, 30))
但我仍然得到相同的错误。当我查看数据的类别时 –
> class(data)[1] "mRMRe.Data"attr(,"package")[1] "mRMRe"
所以数据已经是请求的类型,但代码仍然无法运行。
我的问题是,如果有人有使用这个包的经验,或者有任何帮助或评论,我将不胜感激!
还想指出,在链接中的示例中 – 当我加载数据时
cgps_ic50 -> cgps.ic50cgps_ge -> cgps.ge
所以数据的名称与示例中的名称不一样。
回答:
根据您编写的代码:
data(cgps)data <- mRMR.data(data = data.frame(target=cgps.ic50, cgps.ge))mRMR.ensemble(data, 1, rep.int(1, 30))
函数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)
target_indices是原始数据框中用于最大化相关性(相关性或其他质量度量)的特征的位置,因此最终选择的特征将有助于解释target_indices中指示的特征。例如,在分类问题中,我们会选择类变量的位置作为target_indices参数的值。
feature_count参数表示要选择的变量数量。
solution_count不是经典mRMR的参数。它表示要组合的mRMR算法的数量,以获得最终的特征选择,因此如果设置为1,则仅执行一个经典mRMR。