2013-05-08 167 views
2

我有13個屬性的數據集,其中一些屬於分類,一些是連續的(可以轉換爲分類)。我需要使用logistic迴歸建立一個模型,預測一行的反應並找出預測的準確性,靈敏度和特異性。在MATLAB中實現邏輯迴歸

  • 可以/我應該使用交叉驗證來劃分我的數據集並得到結果嗎?
  • 有沒有關於如何去做這件事的代碼示例? (我是新來的)
  • 我應該使用mnrfit/mnrval還是glmfit/glmval?有什麼區別,我該如何選擇?

謝謝!

+1

1和3 [stats.SE](http://stats.stackexchange.com/)更好地問。 – Amro 2013-05-08 08:33:51

回答

3

如果您想確定模型可以預測未見數據的程度,您可以使用交叉驗證。在Matlab中,您可以使用glmfit來擬合邏輯迴歸模型,並使用glmval來測試它。

下面是Matlab代碼示例,說明如何做到這一點,其中X是特徵矩陣,Labels是每種情況下的類標籤,num_shuffles是交叉驗證的重複次數,而num_folds是數字摺疊:

for j = 1:num_shuffles 
    indices = crossvalind('Kfold',Labels,num_folds); 
    for i = 1:num_folds 
     test = (indices == i); train = ~test; 
     [b,dev,stats] = glmfit(X(train,:),Labels(train),'binomial','logit'); % Logistic regression 
     Fit(j,i) = glmval(b,X(test,:),'logit')'; 
    end 
end 

然後擬合是每個測試摺疊的擬合邏輯迴歸估計。對這個閾值進行閾值處理將得出每個測試用例的預測類別的估計值。然後通過比較預測的類別標籤和實際的類別標籤來計算性能指標。平均所有摺疊和重複的績效度量可以估計未看到的數據的模型績效。

  • 最初由BGreene on @ Stats.SE回答。