2016-04-08 23 views
2

我目前正在開發一個項目,在該項目中我必須爲構建預測模型做一些特徵選擇。我導致了一個名爲mRMRe的R軟件包。我只是試圖去做這個例子,但是卻無法讓它工作。這個例子可以在這裏找到 - http://www.inside-r.org/packages/cran/mRMRe/docs/mRMR.ensemble在R中使用mRMRe

這裏是我的代碼 -

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類型。所以我做了這個更新 -

# Update 
data <- 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.ic50 
cgps_ge -> cgps.ge 

因此數據的名稱不一樣的例子一樣。

+0

'cgps_ge'和'cgps_ic50'會拋出「未找到對象」的錯誤。我和你的代碼一樣得到了同樣的錯誤,但是在包文檔中我沒有運行示例代碼的錯誤。在我看來,你沒有「閱讀手冊」。 –

回答

5

隨着你的代碼中寫道:

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是在原有data.frame位置用於最大化相關性的特徵(相關性或其他質量度量),因此最終選擇的特徵將有助於解釋target_indices中指示的特徵。 例如,在分類問題中,我們將選擇類變量的位置作爲target_indices參數的值。

feature_count參數指示要選擇的變量的數量。

solution_count不是傳統mRMR的參數。它表示mRMR算法的總數以獲得最終特徵選擇的數量,所以如果設置爲1,它僅執行一個經典的mRMR。