数字をきれいに10分割(Perl)
SVM_Lightで10分割交差検定を行いたい、そのために入力データを10個に分割し、10個のデータセットを作りたいと考えています。
(卒論時にそういうことを行うプログラムを作ったのですが、改めて作ってみようかと思っています)
とりあえず、入力データがn個あるとして、それをきれいに10個に分けるということだけやってみました。
"きれいにn個に分ける"とは、例えば7個のデータをきれいに3個に分ける場合、「3,2,2」となります。「4,2,1」や「5,1,1」ではありません。
(伝わりにくい表現ですかね・・・)
"I Love Perl Because I Love Perl"
ソースコード
my $totalDataNum = 25; my @array= (0,0,0,0,0,0,0,0,0,0); my $numCount = 0; my $loopCount = 0; while($numCount < $totalDataNum){ for(my $i=0;$i<@array;$i++){ $array[$i]++; $numCount++; if($numCount == $totalDataNum){ $loopCount++; last; } } last if($loopCount > 0); } print @array,"\n";
出力結果
3333322222
メモ
- データ個数が少ないと($totalDataNumが10未満だと)変なことになる
- うまく(正例、負例のバランスを考えて)10分割してくれるPerlプログラムないかな・・・
- xtnfold.shというものはあるみたいです。
今日やったこと
- 研究関連
- 筋トレ(いつもより少ないセット数)
その他
明日からまた一人暮らし。
お正月で体重がどう変化したか楽しみだなー。