
1. 이상치 제거
2. 스케일링 (표준화, 정규화)
3. 원핫 인코딩
4. 상관관계 확인을 통해 높은 상관관계를 가지는 컬럼 제거하기
5. PCA를 통한 차원 축소
6. 엘보우 기법을 통해 최적의 k 찾기

# 최적의 k로 클러스터링
optimal_k = 2 # 엘보우 기법으로 찾은 최적의 k를 설정
kmeans = KMeans(n_clusters=optimal_k, init='k-means++', random_state=42)
clusters = kmeans.fit_predict(pca_features)
# 실루엣 계수로 클러스터링 성능 평가
silhouette_avg = silhouette_score(pca_features, clusters)
print(f'Silhouette Score for {optimal_k} clusters: {silhouette_avg}')
# Silhouette Score for 2 clusters: 0.5283211567128504