how to change a number randomly???...
1 回表示 (過去 30 日間)
古いコメントを表示
I have a column matrix that contains class labels in it. It has 35 rows... There are 4 class labels ( 1 2 3 4 )...
labels = [1 1 3 2 4 1 2 4 3 3 2 1 4 2 3 4 4 2 2 1 3 2 4 4 2 3 1 1 2 4 3 1 2 1 3] '
now I randomly select 5% of data from it as
N_of_labels= size(labels,1)
prcnt_labels = ceil(N_of_labels*5/100);
rng(1,'twister');
rand_class_index = randsample(N_of_labels,prcnt_labels);
labels(rand_class_index) = rem(labels(rand_class_index),4)+1;
the purpose of it to make the class labels noisy (changing the actual label).... Now here, rem() will always change the label 1 into 2 and 2 into 3 and so on... I need to change the labels randomly i.e. I want that 2 should be change to any number from 1 3 4 but not always to 3.... how can I do that???...
0 件のコメント
採用された回答
Jan
2012 年 11 月 30 日
編集済み: Jan
2012 年 11 月 30 日
What about adding random values between 0 and 3 before REM:
rem(labels(rand_class_index) + randi([0, 3], prcnt_labels, 1), 4) + 1
If the label must be changed, use the range [1,3].
[EDITED after your comment]
randi([0,3]) replies number from 0 to 3. Then a value can be unchanged. If a change is obligatory, use the range [1,3] as mentioned already:
rem(labels(rand_class_index) + randi([1, 3], prcnt_labels, 1), 4) + 1
2 件のコメント
その他の回答 (1 件)
参考
カテゴリ
Help Center および File Exchange で Numeric Types についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!