2014-05-24 5 views
1

특정 허용 오차 내에서 매개 변수를 그룹화하는 가장 좋은 논리를 파악하려고합니다. 그들은 서로의 2 내에 있으면 내가 그룹 작업을하려면 그것은비슷한 매개 변수를 그룹화하는 논리

Task1: parameter1=140 
Task2: parameter1=137 
Task3: parameter1=142 
Task4: parameter1=139 
Task5: parameter1=143 

... 예와 함께 설명하기 쉽게, 나는 여러 패스를 할 필요가 있다고 생각합니다. 예를 들어, 원하는 결과는 다음과 같다 : Task4는 작업 1, Task2 및 Task4 커버 Task3 커버 Task3 및 Task5

작업 1도 3 및도 4 그런데 2 및 5가 될 커버 할 수 있기 때문에 여러 가지 가능성이 두 자체적 인 추가 작업. 기본적으로, 나는 2 명 이내의 작업 중 가장 적은 수의 작업을 원합니다.

현재이 작업을 Excel VBA에서 수행하려고하고 있지만 나중에 PHP 코드를 이식 할 수 있습니다. 나는 꽤 복잡한 것처럼 보이기 때문에 어디에서 시작해야할지 모르겠습니다.

답변

1

클러스터링 알고리즘이 필요합니다. 다음 매개 변수를 고려하십시오.

Task1: parameter1=140 
Task2: parameter1=142 
Task3: parameter1=144 
Task4: parameter1=146 
Task5: parameter1=148 

논리에 따라 클러스터링이 이상하게 나옵니다. 단순히 각각의 번호를 확인하면 그 숫자가 모두 클러스터됩니다. 그러나 140과 148은 동일한 클러스터에 속해야합니까? kmeans 클러스터링을 시도하십시오. 회색 부분이 있지만 결과는 비교적 정확합니다.

http://en.wikipedia.org/wiki/K-means_clustering

1

당신은 그룹 작업은 하나의 패스 당신은 작업보기 전에 그룹의 경계를 결정 할 수 있습니다. 여기에 그룹 작업을 당신의 목표에 따라 폭 4의 버킷을 사용하여 간단한 예는 서로의 +/- 2 내에서의 : 고정 버킷에 의해 제공되는 그룹이 밀접하게 충분한 데이터를 맞지 않으면

Dim bucket As Integer 

For Each parameter In parameters 
    bucket = Round(parameter/4, 0) 

    ' ... do something now that you know what bucket the task is in 
Next parameter 

당신의 여러 패스를 만드는 알고리즘을 사용해야합니다. 예제의 데이터가 1 ​​차원이기 때문에 use simpler techniques than k-means clustering을 사용할 수 있습니다.

JavaScript로 Jenks Natural Breaks Optimization을 매우 잘 언급 한 다음 좋은 장소는 Literate Jenks Natural Breaks and How The Idea Of Code is Lost 일 수 있습니다.

+0

나는 단지 제안 된 방법을 두 번 사용하기 때문에 문제가 아니라고 생각했지만 실제로는 2 차원입니다. 나는 물어볼 간단한 질문으로 만들려고했다. 유사한 제약 조건을 갖는 parameter2가 있습니다. 작업은 서로의 2 내의 값의 매개 변수 1과 매개 변수 2에 의해 서로 2의 값으로 그룹화됩니다. 어쩌면 k- 수단이 갈 길이 될 것입니다. – dreed75

+0

이 경우 차원이 중요합니다. 당신은 * 2 차원 이상의 수없는 방식으로 * 1 차원 데이터를 정렬 할 수 있습니다. k-means를 시도하고 SciPy의 [kmeans] (http://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.vq.keans.html#scipy.cluster.vq)와 같은 기존 구현을 사용해보십시오. .kmeans)를 사용하는 것이 좋습니다. 이렇게하면 예상 한 결과를 얻으면 훨씬 더 빨리 볼 수 있습니다. –

관련 문제