2
我有13個屬性的數據集,其中一些屬於分類,一些是連續的(可以轉換爲分類)。我需要使用logistic迴歸建立一個模型,預測一行的反應並找出預測的準確性,靈敏度和特異性。在MATLAB中實現邏輯迴歸
- 可以/我應該使用交叉驗證來劃分我的數據集並得到結果嗎?
- 有沒有關於如何去做這件事的代碼示例? (我是新來的)
- 我應該使用mnrfit/mnrval還是glmfit/glmval?有什麼區別,我該如何選擇?
謝謝!
我有13個屬性的數據集,其中一些屬於分類,一些是連續的(可以轉換爲分類)。我需要使用logistic迴歸建立一個模型,預測一行的反應並找出預測的準確性,靈敏度和特異性。在MATLAB中實現邏輯迴歸
謝謝!
如果您想確定模型可以預測未見數據的程度,您可以使用交叉驗證。在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
然後擬合是每個測試摺疊的擬合邏輯迴歸估計。對這個閾值進行閾值處理將得出每個測試用例的預測類別的估計值。然後通過比較預測的類別標籤和實際的類別標籤來計算性能指標。平均所有摺疊和重複的績效度量可以估計未看到的數據的模型績效。
1和3 [stats.SE](http://stats.stackexchange.com/)更好地問。 – Amro 2013-05-08 08:33:51