2015-07-10 4 views
0

У меняРазделение данных с использованием randperm

dataset=[6 7; 
     5 4; 
     9 8; 
     1 2; 
     9 8; 
     4 5; 
     1 2; 
     3 4; 
     8 7; 
     6 2] 

может я случайным образом выбрать 90% данных для обучения, а остальные (10%) для тестового набора затем повторить расщепленных 10 раз.

т.е.

training = [6 7; 
      5 4; 
      9 8; 
      1 2; 
      9 8; 
      1 2; 
      3 4; 
      8 7; 
      6 2] 
test= [4 5] 

Я написал этот код

num_points = size(X,2); 

split_point = round(num_points*0.7); 

разделить данные, но я не могу получить результат

+0

Вы имели в виду 'num_points = size (dataset, 1)'? 'size (dataset, 2)' is '2'. – beaker

ответ

2
dataset=[6 7; 
     5 4; 
     9 8; 
     1 2; 
     9 8; 
     4 5; 
     1 2; 
     3 4; 
     8 7; 
     6 2] 

случайным образом изменить порядок набора данных с помощью randperm:

n = size(dataset,1); 
data_rand = dataset(randperm(n),:) 

Затем вытащить различный 10% каждый раз:

m = ceil(n/10); 
group = 1; 
for k = 1:m:n-m 
    test{group} = data_rand(k:k+m-1,:) 
    train{group} = [data_rand(1:k-1,:); data_rand(k+m:end,:)]; 
    group = group + 1; 
end 

Но я также предлагаю вам прочитать о cross validation in Matlab, как это имеет много встроенных функций для этого.

+0

заботиться о разработке? – Dan

+0

на каждом этапе расщепления я хочу, чтобы набор тренировок и результат набора тестов применили мой алгоритм на нем –

+0

Я буду применять расщепление 10 раз, в первый раз скажу, что набор для тренировки = [6 7; 5 4; 9 8; 1 2; 9 8; 1 2; 3 4; 8 7; 6 2] и test = [4 5], тогда я применим свой алгоритм, а затем повторю расщепление с новым набором тренировок и тестов и т. Д. –

Смежные вопросы