2017-11-09 8 views
-1

DOB, Gender, State, Pincode, Transaction_id, Promocode 등의 속성을 사용하여 특정 데이터 세트에 따라 고객을 그룹화하려합니다.K-means 알고리즘의 시드 값을 넣는 방법은 무엇입니까?

내가 알고리즘을 실행할 때마다 실루엣 점수에 큰 차이가 있습니다. 이전 결과와의 클러스터링, 즉 결과가 일관성이 없습니다. 아마 그것은 데이터 세트에 대한 임의의 시드 때문입니다. 다음은 속성을 알고리즘에 전달하는 선입니다.

km1 = KMeans(n_clusters=6, n_init=25, max_iter = 600) 

클러스터를 할당하거나 내가 프로그램을 실행 매번 한 후, 점수가 일관되고 더 나은되도록 최적화 할 수있는 방법이 있습니까?

저는 scikit-learn과 함께 Python 3을 사용하고 있습니다.

+1

여기에 어떤 언어 및 프레임 워크가 사용됩니까? Scikit을 배우는 파이썬인가? 명확히하십시오 (특정 태깅도 작업을 수행 할 수 있습니다) ... – desertnaut

답변

1

당신이 scikit-learn을 사용하는 것처럼 보입니다 (나는 짐작하고 있습니다). 이 경우

그냥 사용 위 링크에서 설명한

km1 = KMeans(n_clusters=6, n_init=25, max_iter = 600, random_state=MYSEED) 

하면 MYSEED 정수, RandomState 객체 또는 없음 (디폴트) 될 수있는.

이는 :

km1 = KMeans(n_clusters=6, n_init=25, max_iter = 600, random_state=0) 

결정적 결과를 유도한다.

비고 : 이것은 k- 무작위 성을 의미합니다. 데이터를 분할/CV 한 경우 이러한 작업을 결정적으로해야합니다!

1

random_state=을 고정 값으로 수정할 수 있습니다. 그러나 결과가 마음에들 때까지이 값을 조정하지 마십시오.

k-means가 시작 조건에 민감하면 (즉, "품질"이 많이 달라짐) 일반적으로 알고리즘이이 데이터에서 잘 작동하지 않음을 나타냅니다. 인 경우 좋은 k-means 클러스터링이 있다면 적어도 대부분 을 얻는 것이 쉬울 것입니다. 따라서 n_init=25을 사용하면 거의 언제나 좋은 해결책을 찾을 수 있습니다. 이면에 1이 있습니다. 그러나 k-means 좋은 해결책을 찾을 수 없습니다 많은 데이터 세트가 있습니다!