2012-11-16 1 views
0

나는 이전 질문이 here이고 나는 샘플 데이터와 idx 샘플 데이터의 인덱스를 동시에 섞을 수 없기 때문에 문제가 있다고 생각합니다.randperm 또는 shuffle 동시에 두 데이터 세트

fulldata 중 49,000 행 × 6 열의 데이터 세트가 있는데, fulldata의 정확한 행에 해당하는 수많은 클래스 레이블을 포함하는 fulldata (Book2)의 클래스 레이블 인 다른 데이터 세트가 있습니다.

저는 정상적인 750 개의 행과 250 개의 smurf 행을 원했던 fulldata (normal. smurf.)에서 2 개의 클래스 레이블만을 선택하려고했습니다.

그런 다음 새 샘플 데이터 (1000x6)를 무작위로 섞기를 원했습니다.

이 시점까지 관리되었습니다. 하지만 그때 붙어 버렸어요 ... 댄은 이전 질문에 도움을주었습니다. 그런 다음 k1이 넵튠 등 Book2의 다른 클래스 레이블을 출력한다는 사실을 알아 냈습니다. K1은 smurf 및 일반 클래스 만 포함해야합니다. 레이블.

나는 이것이 내가 MATLAB에서 baysian 분류기를 사용하기 원하기 때문에 내가 필요 그것을 사용하기 위해 요청 이유 :

Test_Data (unseen data) 
Trainning_data (This is the sample data im trying to create above) 
Target_class (this is the class labels that match exactly each row in sample data) 
+2

정확히 무엇을 찾고 계시는지 조금 더 명확하게 말씀해 주시겠습니까? –

+0

두 개의 데이터 세트를 동시에 섞으세요? 나는 다른 말로 표현할 수 없다. –

+0

입력과 비슷한 모양을 보여주고 원하는 출력 데이터를 표시 할 수 있습니다. (소규모 또는 몇 줄로) –

답변

2

나는, 당신이 질문의 표현이 다소 모호 즉

shuffle = randperm(1000); 
sample = sample(shuffle,:); 
K1 = Book2(idx (shuffle), :); 
0

확인 이전 질문을 읽은 후 나는 질문을 이해 희망 . 내가 옳다면, 데이터를 먼저 필터링하고 smurf와 normal 만 추출하는 것을 잊어 버렸습니다. http://www.mathworks.nl/company/newsletters/articles/Matrix-Indexing-in-MATLAB/matrix.html;jsessionid=97fa707e5059807b7ecae8969810

사용이 당신의 데이터 포인트를 그리기 전에 오른쪽 부분 집합을 추출하고 확인을해야한다 : 당신은 논리적 색인을 조사한다이 경우

. 가되지 않도록

1

다음

idx = [smurfIdx(a);normIdx(p)]; 

그리고 당신은 이전 질문에서 댄의 추천 @ 사용 있는지 확인하려는 생각 정확히 붙어있는 곳을 비우십시오. 그러나 이전 질문 (thisthis)을 검토 할 자유를 얻었으므로 다음은 문제를 해결하기위한 시도입니다.

이 답변을 얻으려면 먼저 임의의 데이터 세트를 생성하십시오 너의 것 :

classes = {'normal.', 'smurf.', 'neptune.', 'eject.', 'portsweep.'}; 
fulldata = ceil(1e3 * rand(49000, 6)); 
Book2 = {classes{ceil(numel(classes) * rand(size(fulldata, 1), 1))}}'; 

"정상적인"꼬리표에 대응하는 750의 줄 및 "smurf"꼬리표에 대응하는 250의 줄을 무작위로 선택하십시오. 그러나 데이터 자체에 randperm을 적용하고 이전 질문에서와 같이 첫 번째 N 값을 선택하는 대신 임의의 인덱스 벡터를 만들어 다음과 같이 fulldataBook2 배열에 모두 색인을 생성해야합니다.

idxnormal = strmatch('normal.', Book2);   % # Find normals 
idxnormal = idxnormal(randperm(numel(idxnormal))); % # Random shuffle of normals 
idxsmurf = strmatch('smurf.', Book2);    % # Find smurfs 
idxsmurf = idxsmurf(randperm(numel(idxsmurf))); % # Random shuffle of smurfs 
idx = [idxnormal(1:750); idxsmurf(1:250)];   % # 750 normals and 250 smurfs 
idx = idx(randperm(numel(idx)));     % # Random shuffle 

idx 지금 fulldata에 임의의 인덱스를 보유/"보통"또는 "스머프"태그에만 해당되는 'BOOK2'.이제 해당 태그가있는 데이터의 하위 집합을 검색 할 수 있습니다.

subsetdata = fulldata(idx, :); 
K1 = Book2(idx); 
+0

위의 내용을 사용하여 문제가 발견되었을 수 있습니다. [여기에 새 질문이 있습니다] (http://stackoverflow.com/questions/13426665/sample-data-causing-problems-with) -naive-bayes-classifier) ​​샘플링 또는 분류 자인지 확실하지 않습니다. –