2017-05-16 8 views
1

かなり大きいデータセットでTreebagger()を使用してMatlabのランダムフォレストをトレーニングしています。メモリが問題です。返されたTreebaggerクラスには、別のデータセットpredict()には必要ではないと思われる多くのデータが含まれています。例えば。クラスには多くのメモリを使用するトレーニングデータ全体(フィールドXとフィールドY)が含まれています。Matlab:メモリを節約するためにTreeBaggerクラスからフィールドを削除する

私はどのようにしてTreebaggerクラスからフィールドを削除しますか? rmfield(class,'X')またはclass.X = [];を使用しても機能しませんでした。

これは最初から非常に悪い考えですか?

+0

クラスの仕組みがわかりませんが、それは悪い考えです。何らかの理由でそこにいるはずです –

答えて

2

Xは、読み取り専用のフィールドです。このフィールドは設定または削除できません。 TreeBagger()に関連付けられたcompactメソッドがあり、元のオブジェクトの縮小版を作成します。例えば

、使用して二つのオブジェクトのメモリを比較

load fisheriris 
rng(1); % For reproducibility 
Mdl = TreeBagger(50,meas,species,'OOBPrediction','On','Method','classification'); 

cMdl = Mdl.compact(); 

whos Mdl cMdl

Name  Size    Bytes Class    Attributes 

Mdl  1x1    488373 TreeBagger      
cMdl  1x1    452586 CompactTreeBagger    

あなたが圧縮されたオブジェクト、cMdlに見た場合には、トレーニングデータを見つけることができませんXYがその中にあります。

+0

まさに私が探していたものです。タイはたくさん! –

+0

@lmesそれは助けてうれしい! – kedarps

関連する問題