안녕하세요. 현재 개발하고 있는 솔루션은 ML로 수행하여 최적의 cluster 파라미터를 찾고있습니다.
그러다가 max_feqtures, cluster개수를 수작업으로 수행하다가, 그냥 for문으로 시작과 끝점만 알려주고 Score가 가장 큰값을 찾게 하는게 나은거같아 아래와같이 코드를 추가하여 최대값을 찾고있습니다.
대부분은 ari score가 아닌 label을 정의하고 해당 label로 유사도 측정을 하는데요, 저는 사전 정의된 label이 없어서 ari score로 아래 코드로 반복수행하여 최대값을 찾는 과정중에 있습니다.
저와 같은 고민이 있으셨던 분들은 아래코드 활용하세요.
cf) Kmeans 외에 다른 방법까지 추가하는 반복문을 하면 best일거같으나, 그럴경우 시간이 상당히 걸리긴 하네요.
<ML 반복문 코드>
best_ari_score = -1 # 최대 ARI Score 값을 저장할 변수 초기화
best_config = {} # 최대 ARI Score일 때의 설정값을 저장할 딕셔너리 초기화
# 최적의 조합을 찾기 위한 반복문
for max_features in range(10, 101, 10): # TF-IDF 벡터화의 max_features 값을 10부터 100까지 10단위로 조정
for num_clusters in range(2, 21): # K-Means 클러스터의 n_clusters 값을 2부터 20까지 조정
# TF-IDF 벡터화 수행
tfidf_vectorizer = TfidfVectorizer(max_features=max_features)
tfidf_matrix = tfidf_vectorizer.fit_transform(question_data['question'])
# K-Means 클러스터링 수행
kmeans = KMeans(n_clusters=num_clusters, random_state=42)
question_data['cluster'] = kmeans.fit_predict(tfidf_matrix)
# ARI Score 계산
ari_score = adjusted_rand_score(question_data['question'], question_data['cluster'])
# 최대 ARI Score일 때의 설정값 업데이트
if ari_score > best_ari_score:
best_ari_score = ari_score
best_config['max_features'] = max_features
best_config['n_clusters'] = num_clusters
# 최적의 설정값과 최대 ARI Score 출력
print("Best Configuration:")
print(best_config)
print("Best ARI Score:", best_ari_score)
감사합니다.
'IT' 카테고리의 다른 글
사진첩에서 강아지를 찾아라!(AI torchvision활용, 파이썬) (0) | 2024.02.18 |
---|---|
공공데이터 Rest API 활용팁(부동산,정책 등) (0) | 2024.02.17 |
OpenAI(ChatGPT)API 사용방법(애러포함_2023년대비 변경사항) (0) | 2024.02.02 |
ChatGPT를 활용한 1분만에 엑셀data 분석 (0) | 2024.01.30 |
쉬운 프로젝트 일정관리(Jira활용) (1) | 2024.01.13 |