2012-11-19 2 views
1

계속 내가 가지고 다음과 같은 데이터 세트비닝 기술 데이터

열 1 6

1.0000   0 0.9954 -0.0589 0.8524 0.0231 
1.0000   0 1.0000 -0.1883 0.9304 -0.3616 
1.0000   0 1.0000 -0.0336 1.0000 0.0049 
1.0000   0 1.0000 -0.4516 1.0000 1.0000 
1.0000   0 1.0000 -0.0240 0.9414 0.0653 
1.0000   0 0.0234 -0.0059 -0.0992 -0.1195 
1.0000   0 0.9759 -0.1060 0.9460 -0.2080 
    0   0   0   0   0   0 
1.0000   0 0.9636 -0.0720 1.0000 -0.1433 

을 통해 나는 문제 중 하나는 데이터가 이진 분할을 계속 사용하여 의사 결정 트리 구축을 위해 노력하고 있는데 현재의 구현은 데이터를 그대로두고 분할을 수행하여 계산적으로 강렬 해집니다. 나는 당신이 단지 하나의 분류자를 만드는 경우에 그렇게 나쁠 것이라고 말할 것입니다.

제 경우에는 10 배를하고 5 분에서 50 분까지 분류자를 늘립니다 (Bagging). 나는 데이터가 양동이를 0.2 버킷으로 얻는 방식으로 binning을 할 생각 이었지만 음수가 있다는 것을 깨달았다. 나는 구현을 위해 matlab을 사용하고있다. 저는 Matlab NewB입니다. 이와 같은 시나리오를 처리하기위한 사전 정의 방법이 있는지 확실하지 않습니다. 이 완전히 질문을 해결하지만 문제는 '버킷'을 정의하는 경우 동적으로이 작업을 수행 할 수 있는지 여부를

+0

좀 더 명확하게 문제를 작성해주십시오. 당신이이 질문을 많이 향상시킬 수있는 간단하고 짧은 문장을 고수한다면. 나는 대답하기 전에이 문제의 언어를 정리하려했지만 이해할 수없는 것들이있었습니다. 건배. –

답변

1

확실하지 :

% Find the minimum and maximum of the matrix 
Mmin = min(M(:)); 
Mmax = max(M(:)); 

% Assume you have a matrix M with positive and negative values, and want it in bins of 0.2 
buckets = Mmin:0.2:Mmax; 

% OR assume you want to spread them equally over a fixed amount of bins, say 100 
buckets = linspace(Mmin,100,Mmax); 

편집 :

것은 당신이 기반 행렬을으로 나눔한다고 가정 하나 개의 컬럼의 값에, 3 말, 당신은 이런 식으로 작업을 수행 할 수 있습니다이 각 행이 속한 양동이를 알려줍니다

% Define the relevant column as a vector for easy handling 
v = M(:,3); 

% Assume you want to spread them equally over a fixed amount of bins, say 100 
buckets = linspace(min(v),100,max(v)); 
% Now see which column belongs in each bucket 
bucket_idx = ones(size(v)); 
for i = 2:length(buckets) 
    bucket_idx(v>buckets(i-1)&(v<buckets(i)) = i; 
end 

를, 벡터화 더 좋은 것 하지만이 순간이 내가 생각할 수있는 가장 빠른 해결책입니다. 나는 버킷이 모든 것에 속하는지 알게되면 나머지 문제를 해결할 수 있어야한다고 생각합니다.

+0

나는 양동이 아이디어의 동등한 숫자로 그것을 퍼뜨리는 것을 좋아한다. 당신이 나에게 어떻게 양동이의 interms를 나타 내기 위해 원래의 행렬을 변환 할 수 없는지를 말할 수있는 기회. 마지막 열을 데이터의 레이블로 사용하고 있습니다. 감사합니다 –

+0

이진 트리에 대해 라벨이 1/0이되어서는 안됩니까? 마지막 열에는 다양한 수레가 들어 있습니다 ... 연속 레이블의 경우에는 회귀를하는 것입니다. –

+0

미안하지만 내 질문에 마지막 열을 넣지 않았습니다. 모두 함께 나는 행렬에 35 개의 열이 레이블 인 34 개의 열이 있습니다. where class1 = 1 class2 = 2 –

관련 문제