Closed JiwoonKimKr closed 2 months ago
https://needjarvis.tistory.com/665 일정한 클러스터(군집)을 찾는 K-means(K-평균) 알고리즘은 기계학습/데이터마이닝에서 활용하는 기법이다. 🙃🙃🫠🫠😇😇
그리고 이 클러스터 각각의 K값(군집 중심값)을 구했다면, K값 간의 cosθ을 구하는 것이 필요하다. 이게 코사인 유사도(Cosine Similarity)라고 한다.😇😇 https://needjarvis.tistory.com/516
🫠🫠🫠 파고들다가 머신러닝 근처까지 갔다.
◇고객에게 선호할 법한 상품을 추천하려 한다. ▲ 고객의 과거 주문 이력을 바탕으로 흡사한 상품을 추천하려 한다. ▲ 고객의 주문 이력을 바탕으로 일련의 데이터(value)로 분석해 표현해야 한다. ▲ 고객의 데이터에 흡사한 제품을 추천하려면, 애초에 서버에 각 제품군이 특정 패턴에 묶여있는지 파악하고 있어야 한다. ▲ 요즘 빅데이터/데이터마이닝/머신러닝 기법을 활용, 추천 서비스를 제공한다고😱 ▲ 그런데 나는 머신러닝을 할 만한 데이터가 없어서 임의로 클러스터(군집)을 만들어야 한다ㅠ ▲ 클러스터(군집)을 만드려면 두 개 이상의 Field를 기준축(axis)으로 지정해야,
사실 이게 끝이 아니다. 위에 서술한 방식은 전형적인 컨텐츠 기반 필터링(Content-based-filter)이라고 한다. 요즘은 타 고객의 소비 패턴을 모방한 협엽 필터링(Collabotive Filtering)까지 융합시켜서, 하이브리드 방식을 활용한다고 한다. https://needjarvis.tistory.com/451 살려주세요 제가 잘못했어요😱😱😱🙇♀️🙇♀️🙇♀️😭😭😭
agePetProper
, category
, price
세 개 Field 값으로 각 record마다 값 생성된 spreadsheet 구성🫠🫠🫠시도해보고 안 되면 그냥 java에서 방정식을 만들어서 batch 형태로 일정 시간마다 업데이트시키는 Plan B를 쓰는 것도 좋이 않을까 싶다. 오늘 Python sklearn이랑 numpy 라이브러리 깐다고 시간을 허비한 게 너무 아깝다 ㅠㅠㅠㅠ
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.cluster import KMeans
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
#★ 클러스터링 데이터 불러오기
df = pd.read_csv('listProducts.csv')
print(df)
#★ K-평균 군집화 알고리즘 전처리
# feature 대상
data = df[['category', 'price', 'agePetProper']]
# 정규화 진행
scaler = MinMaxScaler()
data_scale = scaler.fit_transform(data)
#★사이킷런 K-means 클러스터링 알고리즘
k = 3
#그룹 수, random_state 설정
model = KMeans(n_clusters=k, random_state= 10)
#정규화된 데이터에 학습
model.fit(data_scale)
#클러스터링 결과, 각 데이터가 몇 번째 그룹에 속하는 지 저장
df['cluster'] = model.fit_predict(data_scale)
#★K-means 군집화 결과 시각화
fig = plt.figure(figsize = (8, 8))
ax = fig.add_subplot(111, projection='3d')
k= [3, 4, 5, 10]
for i in k:
ax.scatter(df.loc[df['cluster'] == i, 'category']
, df.loc[df['cluster'] == i, 'price']
, df.loc[df['cluster'] == i, 'agePetProper']
, s=10
, alpha=1
, label = 'cluster ' + str(i))
plt.legend()
plt.show()
파이썬을 사용하려던 시도는 실패했다. 그런데 꽤 재밌었다. 😅😅😅😭😭😭 너무 첫 술에 배부르려는 욕심이었다고 생각한다.
겸손해야지ㅠㅡㅜ 어쩔 수 없이 PlanB 를 실행해봐야 한다. 그런데 PlanB도 만만치 않닼ㅋㅋㅋㅋ
오늘은 여러 접근 방법들 찾아보고, 시도해보면서 마음에 드는 알고리즘 찾아보기. 일단 주말부터는 이제라도 늦은 테스트 일정 꼭 지켜야 한다.😱😱🫠🫠