X축에 속하는 클러스터 수가 커질수록 이너셔 값이 감소한다. 보통 이상적인 방법이라면 이너셔 값이 꺾이는 부분을 찾아 클러스터의 수를 정해 준다. 이너셔 값이 급격하게 꺾이는 지점을 찾아 군집으로 정하는 것을 팔꿈치가 꺾이는 것에 비유해 엘보(Elbow) 기법이라고 부른다. 하지만 현실세계 데이터를 다루다 보면 이론처럼 급격하게 꺾이는 지점이 나타나지 않을 수 있다. 또 클러스터의 수가 너무 많으면 군집화 값을 관리하기 어려울 수도 있다.
이 실습의 목적은 비슷한 강의끼리 분류하는 것이다. 급격하게 이너셔 값이 꺾이는 부분을 찾기는 어렵지만 강의를 나눌 때 50개 정도의 분류로 나눌 수 있다고 가정하겠다. 그래서 기울기가 충분히 줄어들었다고 보이는 50 정도를 n_clusters 값으로 넣어 준 후 값을 키우거나 줄여서 사용했다. 일단 n_clusters = 50으로 설정하고 fit()으로 학습시킨다.
n_clusters = 50 kmeans = KMeans(n_clusters=n_clusters, random_state=42) kmeans.fit(feature_tfidf) prediction = kmeans.predict(feature_tfidf) df["cluster"] = prediction
결과는 cluster라는 새로운 열에 담는다. 그리고 value_counts()로 df["cluster"]의 빈도수를 구한다. 판다스의 value_counts()는 시리즈(series) 유일값의 빈도를 계산해 주는 함수다. 결과는 다음과 같이 인덱스가 유일값이고, 값은 빈도수인 판다스 시리즈 형태로 출력된다.