1

この小さな関数で作業して、ランダム フォレスト トレインのインデックスを準備します。この関数を使用して、一連の例のインデックスと、例の機能のサブセットのインデックスを取得します。コードが少し遅いことがわかりました。これを行うためのより良い、より高速な方法はありますか?

これが私のコードです

    function [idx_linhas, idx_features ] = prepararsementes(X,features,nseeds,treesize)
    %Esta função prepara os index para a "semeadura" de uma random forest
    idx_linhas = nan(nseeds,treesize);
    idx_features= nan(nseeds,features);

    for idx=1:nseeds
    [~,idx_linhas(idx,:)] = datasample(X,treesize,'Replace',true);
    end


    for idx=1:nseeds
    [~,idx_features(idx,:)] = datasample(X,features,2);
    end

    idx_linhas = idx_linhas.';

    end

前もって感謝します!

4

1 に答える 1

3

これを試して:

function [idx_linhas, idx_features] = prepararsementes(X, features, nseeds, treesize)

    % instead of loop, call datasample() only once, and reshape
    % note that ('replace', true) is the default, so I omitted that

    [~,idx]      = datasample(X, nseeds*treesize);
    idx_linhas   = reshape(idx, nseeds, treesize).';  

    [~,idx]      = datasample(X, nseeds*features, 2);
    idx_features = reshape(idx, nseeds, features);

end

統計的に言えば、特定の重み付けがなく、どちらの場合も置換で描画するため、結果は同じになるはずです。

于 2013-08-30T09:11:49.500 に答える