{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# **Ch10 구매이력을 활용한 사용자 그룹화**\n", "- **처음 배우는 머신러닝** 10장 : [**(GitHub)**](https://github.com/your-first-ml-book/Examples)\n", "- **군집화 알고리즘 :** 군집 **K** 갯수를 정의하여 분석 합니다\n", "- **데이터의 전체적인 분석** 으로 명확한 기준까지 도달하진 못합니다 " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## **Python Functions**\n", "- **Counter()** : list 객체내 string 들을 Count 합니다\n", "- **setdefault()**: list 객체를 dict로 변환하여 출력" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Counter({'a': 2, 'b': 3, 'c': 1})" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Counter() List 내 객체의 수를 측정합니다\n", "import collections\n", "collections.Counter(['a', 'b', 'c', 'a', 'b', 'b'])" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Counter({'a': 1, 's': 4, 'b': 1, 'd': 1, 'f': 3, 'g': 2})" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collections.Counter('asbdfsfgsfsg')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Counter({'a': 2, 'b': 3, 'c': 1})" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collections.Counter({'a':2, 'b':3, 'c':1})" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Counter({'a': 2, 'b': 3, 'c': 1})" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collections.Counter({'a':2, 'b':3, 'c':1})" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Counter({'a': 2, 'b': 3, 'c': 1})" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collections.Counter(a=2, b=3, c=1)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'a': 0}\n", "{'a': 1, 'b': 0}\n", "{'a': 1, 'b': 1, 'c': 0}\n", "{'a': 1, 'b': 1, 'c': 1}\n", "{'a': 1, 'b': 2, 'c': 1}\n", "{'a': 2, 'b': 2, 'c': 1}\n", "{'a': 2, 'b': 3, 'c': 1}\n" ] } ], "source": [ "s, d = ['a', 'b', 'c', 'b', 'a', 'b', 'c'], {}\n", "for k in s:\n", " # value 없으면 입력값을(0), 있으면 value를 출력\n", " d.setdefault(k, 0) # list를 dict으로 초기화\n", " print(d)\n", " d[k] += 1 # counting 계산을 합니다" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## **1 데이터 전처리 및 임베딩**\n", "### **01 데이터 구조 살펴보기 및 전처리**\n", "- 파일을 읽어 위에 정의한 데이터구조를 분석합니다" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountry
053636585123AWHITE HANGING HEART T-LIGHT HOLDER612/1/10 8:262.5517850.0United Kingdom
153636571053WHITE METAL LANTERN612/1/10 8:263.3917850.0United Kingdom
253636584406BCREAM CUPID HEARTS COAT HANGER812/1/10 8:262.7517850.0United Kingdom
353636584029GKNITTED UNION FLAG HOT WATER BOTTLE612/1/10 8:263.3917850.0United Kingdom
453636584029ERED WOOLLY HOTTIE WHITE HEART.612/1/10 8:263.3917850.0United Kingdom
\n", "
" ], "text/plain": [ " InvoiceNo StockCode Description Quantity \\\n", "0 536365 85123A WHITE HANGING HEART T-LIGHT HOLDER 6 \n", "1 536365 71053 WHITE METAL LANTERN 6 \n", "2 536365 84406B CREAM CUPID HEARTS COAT HANGER 8 \n", "3 536365 84029G KNITTED UNION FLAG HOT WATER BOTTLE 6 \n", "4 536365 84029E RED WOOLLY HOTTIE WHITE HEART. 6 \n", "\n", " InvoiceDate UnitPrice CustomerID Country \n", "0 12/1/10 8:26 2.55 17850.0 United Kingdom \n", "1 12/1/10 8:26 3.39 17850.0 United Kingdom \n", "2 12/1/10 8:26 2.75 17850.0 United Kingdom \n", "3 12/1/10 8:26 3.39 17850.0 United Kingdom \n", "4 12/1/10 8:26 3.39 17850.0 United Kingdom " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 영국 소매업체의 선물/ 기념품 판매데이터\n", "# ! cat ./data/online_retail_utf.txt | head -n 4\n", "\n", "import pandas as pd\n", "data = './data/online_retail_utf.txt'\n", "df = pd.read_csv(data, header=0, error_bad_lines=False, sep='\\t', low_memory=False)\n", "# df.describe()\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **02 데이터의 기초 통계량 및 시각화**\n", "- 기초통계는 Scipy의 stats 모듈을 사용합니다\n", "- **scipy.stats.describe** (data, axis=0, ddof=1, bias=True, nan_policy='propagate')\n", "- user_product_dic_raw : **[사용자] 상품코드**\n", "- product_user_dic : **[상품코드] 사용자ID**\n", "- product_id_name_dic : **[상품코드] 상품명**" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# 기초통계량의 분석을 위해 scipy 를 활용합니다\n", "import time\n", "from scipy import stats\n", "data = './data/online_retail_utf.txt'\n", "user_product_dic_raw = {} # key : 사용자ID, value : 상품코드\n", "product_user_dic = {} # key : 상품코드, value : 사용자ID\n", "product_id_name_dic = {} # key : 상품코드, value : 상품명" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# 사용자의 수: 3,835\n", "# 제품 종류수: 3,588\n", "CPU times: user 5.67 s, sys: 48.3 ms, total: 5.72 s\n", "Wall time: 5.72 s\n" ] } ], "source": [ "%%time\n", "for line in open(data):\n", " line_items = line.strip().split('\\t') # 1줄씩 읽어서 처리\n", " user_code = line_items[6]\n", " product_id = line_items[1]\n", " product_name = line_items[2]\n", " \n", " if len(user_code) == 0: continue # 사용자 ID가 없으면 무시\n", " country = line_items[7] # 영국만 고려, 아닌 경우에는 무시\n", " if country != 'United Kingdom': continue\n", "\n", " # 연도 에러처리 (파일헤더를 무시)\n", " try: invoice_year = time.strptime(line_items[4], '%m/%d/%y %H:%M').tm_year\n", " except ValueError: continue\n", "\n", " # 2011년만 추출 (2011년이 아니면 무시)\n", " if invoice_year != 2011: continue\n", "\n", " # 읽은 정보로 데이터 구조를 채웁니다.\n", " # 상품 가짓수를 고려하므로 상품 코드를 셋으로 가지도록 하겠습니다.\n", " user_product_dic_raw.setdefault(user_code, set())\n", " user_product_dic_raw[user_code].add(product_id)\n", " product_user_dic.setdefault(product_id, set())\n", " product_user_dic[product_id].add(user_code)\n", " product_id_name_dic[product_id] = product_name\n", "\n", "# 사용자 인덱스별 구매한 상품수 리스트\n", "product_per_user_li = [len(x) for x in user_product_dic_raw.values()]\n", "\n", "# 이 장에서 사용할 최종 사용자 수와 상품 가짓수를 출력해봅니다.\n", "print('# 사용자의 수: {:,}\\n# 제품 종류수: {:,}'.format(\n", " len(user_product_dic_raw), len(product_user_dic)))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "<사용자별 구매상품 기초통계분석> \n", " statistic value \n", " ------------------------------ \n", " size 3835.00000 \n", " min 1.00000 \n", " max 1603.00000 \n", " mean 58.69074 \n", " std 78.78521 \n", " skew 5.83382 \n", " kutosis 72.60364\n" ] } ], "source": [ "import numpy as np\n", "# 사용자 별점평균의 기초통계량 분석\n", "def print_statistics(array, title=\"\"):\n", " sta = stats.describe(array)\n", " print(title, \"\\n%14s %15s\"%('statistic','value'), \"\\n\", 30*'-', \"\\n%14s %15.5f\"%('size',sta[0]),\\\n", " \"\\n%14s %15.5f\"%('min',sta[1][0]), \"\\n%14s %15.5f\"%('max', sta[1][1]),\\\n", " \"\\n%14s %15.5f\"%('mean',sta[2]), \"\\n%14s %15.5f\"%('std', np.sqrt(sta[3])),\\\n", " \"\\n%14s %15.5f\"%('skew',sta[4]), \"\\n%14s %15.5f\"%('kutosis', sta[5])) \n", "\n", "print_statistics(product_per_user_li, \"<사용자별 구매상품 기초통계분석>\")" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib as mpl\n", "from matplotlib import rc\n", "rc('font', family=['NanumGothic','Malgun Gothic'])\n", "mpl.rcParams['axes.unicode_minus'] = False # 마이너스 폰트\n", "\n", "# 사용자별 구매상품 가짓수를 플롯\n", "from collections import Counter\n", "import matplotlib.pyplot as plt\n", "plot_data_all = Counter(product_per_user_li) \n", "plot_data_x = list(plot_data_all.keys())\n", "plot_data_y = list(plot_data_all.values())\n", "plt.xlabel('고유 상품 가짓수')\n", "plt.ylabel('사용자 수')\n", "plt.scatter(plot_data_x, plot_data_y, marker='+')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **03 데이터 전처리**\n", "- 구매물품이 600개 넘는사람은 드물어서 **600개 이상을 구매한 정보는 제외**\n", "- user_product_dic : user_product_dic_raw 에서 추출한 **분석 대상자 정보**\n", "- id_product_dic : **분석 제외 아이템 목록**" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# 1개 구매자: 95명\n", "# 600개 이상 구매자: 7명\n", "# 2~600개 구매자: 3,733명\n", "# 제외품목 갯수: 3,568개\n" ] } ], "source": [ "# 구매상품이 1개, 600개 사용자ID list 목록\n", "min_product_user_li =[k for k,v in user_product_dic_raw.items() if len(v)==1]\n", "max_product_user_li =[k for k,v in user_product_dic_raw.items() if len(v)>=600]\n", "# 구매품목이 2~600개 사용자 구매물품 Dict\n", "user_product_dic = {k:v for k,v in user_product_dic_raw.items() if len(v)>1 and len(v)<=600}\n", "id_product_dic = {} # 분석 제외 물품목록\n", "for product_set_li in user_product_dic.values():\n", " for x in product_set_li:\n", " if x in id_product_dic: \n", " product_id = id_product_dic[x]\n", " else: \n", " id_product_dic.setdefault(x, len(id_product_dic))\n", "\n", "print(\"# 1개 구매자: {}명\\n# 600개 이상 구매자: {}명\".format(\n", " len(min_product_user_li), len(max_product_user_li)))\n", "print(\"# 2~600개 구매자: {:,}명\\n# 제외품목 갯수: {:,}개\".format(\n", " len(user_product_dic), len(id_product_dic)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **04 데이터 임베딩**\n", "- user_product_dic : 전처리 완료 데이터\n", "- user_product_vec_li : **군집화 입력** 리스트\n", "- id_user_dic : **사용자 ID 참조를** 위한 딕셔너리" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# 사용자ID: 13313\n", "# ID별 구매물품 목록: {'23393', '23398', '23407', '84978', '23491', '23328', '23103', '23399'}\n", "# One-Hot: [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", "# One-Hot 총 수: 3,568\n" ] } ], "source": [ "# 원-핫 인코딩으로 변환할 피처의 가짓수\n", "id_user_dic = {} # 사용자 ID 참조를 위한 딕셔너리\n", "user_product_vec_li = [] # 군집화의 입력으로 사용할 리스트\n", "all_product_count = len(id_product_dic)\n", "\n", "for user_code, product_per_user_set in user_product_dic.items():\n", " # 고유상품 목록 리스트\n", " user_product_vec = [0] * all_product_count\n", " # id_user_dic의 길이로 바꿉니다.\n", " id_user_dic[len(id_user_dic)] = user_code \n", " # Key 는 상품코드, user_product_vec 에서 상품 ID를 1로 세팅\n", " for product_name in product_per_user_set:\n", " user_product_vec[id_product_dic[product_name]] = 1\n", " \n", " # 한명의 사용자 처리가 끝난뒤, 사용자 user_product_vec을 배열에 추가\n", " # 이때 배열의 인덱스는 새로 정의한 user_id가 됩니다.\n", " user_product_vec_li.append(user_product_vec)\n", "\n", "print('# 사용자ID: {}\\n# ID별 구매물품 목록: {}'.format(\n", " id_user_dic[0], user_product_dic['17080']))\n", "print(\"# One-Hot: {}\\n# One-Hot 총 수: {:,}\".format(\n", " user_product_vec_li[0][::100], len(user_product_vec_li[0])))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## **2 데이터 분석하기**\n", "### **01 K-means 군집화**\n", "- **분석의 일반화를** 위해, 데이터를 섞은 뒤 **Train(2,500)/Test(나머지)** 구분\n", "- **sklearn** 을 활용하여 **K-means** 군집화를 진행 합니다\n", "- **km_predict.predict**() 을 사용하여 모델링 합니다" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# train 데이터: 2,500\n", "# test 데이터 : 1,233\n", "# 4개의 K-Means 예측모델 : [3 3 3 ... 3 3 1]\n" ] } ], "source": [ "from sklearn.cluster import KMeans\n", "import random\n", "random.shuffle(user_product_vec_li)\n", "train_data = user_product_vec_li[ :2500]\n", "test_data = user_product_vec_li[2500: ]\n", "print(\"# train 데이터: {:,}\\n# test 데이터 : {:,}\".format(\n", " len(train_data),len(test_data)))\n", "\n", "# 4개 클러스터 결과를 km_predict에 저장\n", "# km_predict.predict() 를 사용하여 예측\n", "km_predict = KMeans(n_clusters=4, init='k-means++', n_init=10, max_iter=20).fit(train_data)\n", "km_predict_result = km_predict.predict(test_data)\n", "print(\"# 4개의 K-Means 예측모델 :\", km_predict_result)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **02 정량적 평가로 K 정하기**\n", "- **실루엣(sihouette) 기법 :** 샘플과 클러스터내 다른 샘플과 거리 **(값이 클수록 적합)**\n", "- **엘보우(elbow) 기법 : 급내 제곱합(inertia)의** 평균을 측정합니다 **(간격 기울기가 클수록 효과가 큼)**\n", "- 두 방법을 모두 사용한 결과 cluster 갯수는 2로 정합니다" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "K = 2, shilouette 점수 0.345\n", "K = 3, shilouette 점수 0.213\n", "K = 4, shilouette 점수 0.208\n", "K = 5, shilouette 점수 0.078\n", "K = 6, shilouette 점수 0.172\n", "K = 7, shilouette 점수 0.187\n", "K = 8, shilouette 점수 0.161\n" ] } ], "source": [ "# 1 실루엣 기법 : 클러스터를 2~9 개로 반복하며 실루엣 점수 측정\n", "import numpy as np\n", "from sklearn.metrics import silhouette_score\n", "test_data = np.array(user_product_vec_li)\n", "\n", "for k in range(2,9):\n", " km = KMeans(n_clusters=k, n_jobs=-1).fit(test_data)\n", " print(\"K = {}, shilouette 점수 {:.3f}\".format(\n", " k, silhouette_score(test_data,km.labels_)))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "K = 1, K Means 급내제곱합(inertia): 208524.886686\n", "K = 2, K Means 급내제곱합(inertia): 201135.189311\n", "K = 3, K Means 급내제곱합(inertia): 198964.960511\n", "K = 4, K Means 급내제곱합(inertia): 197687.894741\n", "K = 5, K Means 급내제곱합(inertia): 197688.817637\n", "K = 6, K Means 급내제곱합(inertia): 197183.599352\n", "K = 7, K Means 급내제곱합(inertia): 196967.273546\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# 2 엘보 기법 : Key는 클러스터 수, value는 inertia(급내제곱의 총합)\n", "ssw_dic={}\n", "\n", "# K를 1~8까지 반복하며 급내제곱합의 평균값을 계산\n", "for k in range(1, 8):\n", " km = KMeans(n_clusters=k, n_jobs=-1).fit(test_data)\n", " ssw_dic[k] = km.inertia_\n", " print(\"K = {}, K Means 급내제곱합(inertia): {:3f}\".format(k, km.inertia_))\n", "\n", "plot_data_x = list(ssw_dic.keys())\n", "plot_data_y = list(ssw_dic.values())\n", "plt.plot(plot_data_x, plot_data_y, linestyle=\"-\", marker='o')\n", "plt.xlabel(\"# of clusters\"); plt.ylabel(\"within ss\"); plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **03 정성적 평가로 K 정하기**\n", "- 위의 K=2 를 사용하여 Kmeans 모델을 생성한 뒤 정성적 평가를 진행합니다\n", "- 모든 feacture가 아닌 중요정보를 추출하여 평가를 진행합니다\n", " - 차원축소\n", " - 사용자가 많이 구입한 상품만 추출\n", " - 구매한 상품정보를 살펴본다\n", "- cf) **.extend() :** List 객체를 이어 붙입니다." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 5.48 s, sys: 2.97 s, total: 8.44 s\n", "Wall time: 4.45 s\n" ] } ], "source": [ "%%time\n", "km = KMeans(n_clusters=2, n_init=10, max_iter=20, random_state=None)\n", "test_data = np.array(user_product_vec_li) # 군집화 목록을 Numpy Array로 변환\n", "km.fit(test_data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- id_user_dict : list 변환시 **인덱스별 사용자ID**\n", "- user_product_dic : **사용자ID** 별 **구매한 제품ID**\n", "- product_id_name_dic : **제품ID 와 제품설명**" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cluster_id:0\n", "[('OF', 19601), ('SET', 19432), ('BAG', 14496), ('HEART', 14282), ('VINTAGE', 13818), ('RED', 13072), ('CHRISTMAS', 10831), ('RETROSPOT', 10508), ('DESIGN', 9818), ('PINK', 8653), ('BOX', 7613), ('CAKE', 7428), ('METAL', 7142), ('3', 6846), ('BLUE', 6393), ('WHITE', 6202), ('HANGING', 5935), ('JUMBO', 5926), ('HOLDER', 5837), ('PACK', 5679)]\n", "cluster_id:1\n", "[('OF', 3298), ('SET', 3222), ('HEART', 2604), ('RED', 2248), ('VINTAGE', 2133), ('BAG', 1971), ('RETROSPOT', 1809), ('CHRISTMAS', 1626), ('DESIGN', 1586), ('PINK', 1560), ('METAL', 1314), ('BOX', 1260), ('CAKE', 1258), ('3', 1172), ('WHITE', 1127), ('BLUE', 1083), ('HANGING', 1078), ('HOLDER', 1008), ('SIGN', 998), ('T-LIGHT', 929)]\n" ] } ], "source": [ "# 클러스터내, 상품명이 Uni-Gram 키워드 빈도 계산\n", "def analyze_clusters_keywords(labels, product_id_name_dic, user_product_dic, id_user_dic):\n", " # 임시ID 사용자와 구매상품ID 참조 (상품ID로 상품명 값 추가)\n", " cluster_item = {} \n", " for i in range(len(labels)):\n", " cluster_item.setdefault(labels[i], [])\n", " for x in user_product_dic[id_user_dic[i]]:\n", " cluster_item[labels[i]].extend([product_id_name_dic[x]])\n", " \n", " # 클러스터별 빈도상위 20개 단어 출력\n", " for cluster_id, product_name in cluster_item.items(): \n", " product_name_keyword = (\" \").join(product_name).split()\n", " print(\"cluster_id:{}\\n{}\".format(cluster_id, Counter(product_name_keyword).most_common(20))) \n", "\n", "analyze_clusters_keywords(km.labels_, product_id_name_dic, user_product_dic, id_user_dic)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cluster_id:0\n", "[('RED RETROSPOT', 5548), ('JUMBO BAG', 4835), ('LUNCH BAG', 4135), ('METAL SIGN', 4041), ('T-LIGHT HOLDER', 3969), ('HOT WATER', 3167), ('WATER BOTTLE', 3167), ('CAKE CASES', 3121), ('SET 3', 3021), ('VINTAGE CHRISTMAS', 2996), ('SET 6', 2439), ('DOLLY GIRL', 2290), ('BAG VINTAGE', 2153), (\"50'S CHRISTMAS\", 2047), ('VINTAGE DOILY', 1980), ('PACK 12', 1918), ('HANGING HEART', 1888), ('SET 4', 1829), ('HOME SWEET', 1692), ('SWEET HOME', 1691)]\n", "cluster_id:1\n", "[('RED RETROSPOT', 934), ('METAL SIGN', 793), ('T-LIGHT HOLDER', 677), ('JUMBO BAG', 579), ('HOT WATER', 562), ('WATER BOTTLE', 562), ('SET 3', 529), ('LUNCH BAG', 527), ('CAKE CASES', 482), ('VINTAGE CHRISTMAS', 426), ('SET 6', 420), ('HOME SWEET', 346), ('SWEET HOME', 346), ('HANGING HEART', 335), ('PACK 12', 318), ('SET 4', 312), ('DOLLY GIRL', 303), ('BAG VINTAGE', 285), ('VINTAGE DOILY', 265), ('KEEP CALM', 265)]\n" ] } ], "source": [ "# 클러스터내, 상품명이 Bi-Gram 키워드 빈도 계산\n", "def analyze_clusters_keywords_bigram(labels, product_id_name_dic, user_product_dic, id_user_dic):\n", " cluster_item = {}\n", " for i in range(len(labels)):\n", " cluster_item.setdefault(labels[i], [])\n", " for x in user_product_dic[id_user_dic[i]]:\n", " cluster_item[labels[i]].extend([product_id_name_dic[x]])\n", "\n", " # 상품설명에 ~ OF ~ 로 연결된 부분을 제거한 Bi-gram 작업을 실행\n", " for cluster_id, product_name in cluster_item.items():\n", " bigram = []\n", " product_name_keyword = (' ').join(product_name).replace(' OF ', ' ').split()\n", " for i in range(0, len(product_name_keyword) - 1):\n", " bigram.append(' '.join(product_name_keyword[i:i + 2]))\n", " print('cluster_id:{}\\n{}'.format(cluster_id, Counter(bigram).most_common(20)))\n", "\n", "analyze_clusters_keywords_bigram(km.labels_, product_id_name_dic, user_product_dic, id_user_dic)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cluster: 0\n", "DescribeResult(nobs=3202, minmax=(2, 580), mean=58.07276702061212, variance=4360.061869816995, skewness=2.590034721528296, kurtosis=9.106437972335737)\n", "cluster: 1\n", "DescribeResult(nobs=531, minmax=(2, 542), mean=60.34274952919021, variance=4851.750225633372, skewness=2.5289159546273816, kurtosis=8.582758759484728)\n" ] } ], "source": [ "# 계속 비슷한 결과를 출력하기 때문에 상품별 가짓수의 평균을 출력합니다\n", "def analyze_clusters_product_count(label, user_product_dic, id_user_dic):\n", " product_len_dic = {}\n", " for i in range(0, len(label)):\n", " product_len_dic.setdefault(label[i], [])\n", " product_len_dic[label[i]].append(len(user_product_dic[id_user_dic[i]]))\n", " for k, v in product_len_dic.items():\n", " print('cluster: {}\\n{}'.format(k, stats.describe(v)))\n", "\n", "analyze_clusters_product_count(km.labels_, user_product_dic, id_user_dic)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **04 계층적 군집화**\n", "- [linkage](https://rfriend.tistory.com/tag/single%20linkage%20method) 데이터 변환후, 클러스터를 **dendrogram(계통수)로** plot 합니다\n", "- scipy의 집괴적 군집화 함수로 클러스터를 집괴 합니다. (거리 함수로는 유클리드 함수를 사용)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from scipy.cluster.hierarchy import linkage, dendrogram\n", "# 유클리드 측정방법으로 단일(최단)연결법 Matrix 로 변환\n", "row_clusters = linkage(test_data, method='complete',metric='euclidean')\n", "# 사용자 ID를 사용자 코드로 변환\n", "tmp_label = [id_user_dic[i] for i in range(len(id_user_dic))] \n", "\n", "# 플롯을 그립니다 (X축: 사용자 코드, Y축: 거리 계산법)\n", "plt.figure(figsize=(25,10))\n", "row_denr = dendrogram(row_clusters, labels=tmp_label)\n", "plt.tight_layout(); plt.ylabel('euclid') ;plt.show()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# 랜덤하게 10개만 선별한 뒤 계층도를 그립니다\n", "import random\n", "small_test_data = np.array(random.sample(user_product_vec_li, 10))\n", "small_row_clusters = linkage(small_test_data, method=\"complete\", metric=\"euclidean\")\n", "plt.figure(figsize = (25,10))\n", "dendrogram(small_row_clusters, labels=list(range(len(small_test_data))), leaf_font_size=20)\n", "plt.ylabel(\"euclid\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **05 K 평균 군집화 거리측정**\n", "- sklearn을 활용한 집괴적 군집화 알고리즘\n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 17.6 s, sys: 145 ms, total: 17.8 s\n", "Wall time: 17.8 s\n" ] } ], "source": [ "%%time\n", "from sklearn.cluster import AgglomerativeClustering\n", "ward = AgglomerativeClustering(n_clusters=2, affinity='euclidean', linkage='ward')\n", "ward.fit(test_data)\n", "Counter(ward.labels_)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cluster_id:1\n", "[('RED RETROSPOT', 4977), ('JUMBO BAG', 4319), ('LUNCH BAG', 3710), ('METAL SIGN', 3651), ('T-LIGHT HOLDER', 3519), ('HOT WATER', 2869), ('WATER BOTTLE', 2869), ('CAKE CASES', 2852), ('VINTAGE CHRISTMAS', 2740), ('SET 3', 2698), ('SET 6', 2198), ('DOLLY GIRL', 2092), ('BAG VINTAGE', 1958), (\"50'S CHRISTMAS\", 1850), ('VINTAGE DOILY', 1780), ('PACK 12', 1750), ('HANGING HEART', 1678), ('SET 4', 1638), ('HOME SWEET', 1532), ('SWEET HOME', 1531)]\n", "cluster_id:0\n", "[('RED RETROSPOT', 1506), ('METAL SIGN', 1183), ('T-LIGHT HOLDER', 1127), ('JUMBO BAG', 1095), ('LUNCH BAG', 952), ('HOT WATER', 860), ('WATER BOTTLE', 860), ('SET 3', 852), ('CAKE CASES', 751), ('VINTAGE CHRISTMAS', 682), ('SET 6', 661), ('HANGING HEART', 545), ('HOME SWEET', 506), ('SWEET HOME', 506), ('SET 4', 503), ('DOLLY GIRL', 501), ('PACK 12', 486), ('BAG VINTAGE', 480), ('VINTAGE DOILY', 465), (\"50'S CHRISTMAS\", 444)]\n" ] } ], "source": [ "# 집괴적 군집화로 생성된 클러스터내 상품 Keyword 출력\n", "analyze_clusters_keywords_bigram(ward.labels_, product_id_name_dic, user_product_dic, id_user_dic)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 2 }