# 帳號分群 3/11 實驗結果 ## 實驗目標 - 將輸入資料分為純數字帳號、非純數字帳號,做不同的 hash function,確認能否優化Kmeans分群。 - Threshold 輸出時提供一個清單,列出各個hierarchical group的人數,並依照人數遞減排序,以便能快速鎖定人數多的group進行檢視。(例如:group #5=27人、group #2=4人、group #7=4人、group #3=2人、group #4=2人 ...,這樣的清單印出來後,就容易看出group #5很可能有問題) ## 分別處理純數字與非純數字帳號 - 新增 regular expression (以過濾出純數字帳號 ```python num_rule = re.compile(r'[0-9 _]*[0-9][0-9 _]*') ``` - 主程式一開始即詢問使用者是否只分析純數字帳號 - 根據輸入資料種類使用不同 hash function ```python * 純數字: Type 1: # 直接相加每個字的編碼 hash_value += ord(word) Type 2: # 直接以純數字的數值作為hash value hash_value = int(words) * 非純數字 # 數字的編碼設為1,非數字則直接相加 if word in '0123456789': hash_value += 1 else: hash_value += ord(word) ``` ## Threshold 輸出時提供一個清單 - 原始資料量為 100 筆 - 挑選Kmeans其中一群根據不同 threshold 分群後的結果,統計label,並按照成員數量排序群組 #### Threshold = 0 [Google sheet](https://docs.google.com/spreadsheets/d/1txulN0Ebj0sE-nlSbcU2q7xjzMQinVJRcCAE-sm02HI/edit?usp=sharing) - 成員資訊 ![](https://i.imgur.com/HHtiPXt.png) - 群組人數 ![](https://i.imgur.com/s0XlFy5.png) - 總覽 ![](https://i.imgur.com/D5PlBRb.png =300x) #### Threshold = 35 [Google sheet](https://docs.google.com/spreadsheets/d/1m8YawKafYU3pjbPq5xBhZuyat2NnRCeDVMgN5nhaMiU/edit?usp=sharing) - 成員資訊 ![](https://i.imgur.com/ExUEsVu.png) - 群組人數 ![](https://i.imgur.com/neT4cVH.png) - 總覽 ![](https://i.imgur.com/caXGAif.png =300x) #### Threshold = 50 [Google sheet](https://docs.google.com/spreadsheets/d/1wKvwIG8jrl__O33UFO-6uaZNbNTOZHyWubLWmIRd7Ms/edit?usp=sharing) - 成員資訊 ![](https://i.imgur.com/1zB5YRK.png) - 群組人數 ![](https://i.imgur.com/7U1e9GZ.png) - 總覽 ![](https://i.imgur.com/WTP6zmk.png) ## 不同 hash function 之 Kmeans 分群結果 - 資料量為 100 筆 ### Type 1 (直接相加每個字的編碼) - 分五群 ``` * 數量 (Group 0): 30 (Group 1): 5 (Group 2): 18 (Group 3): 16 (Group 4): 31 ``` ![](https://i.imgur.com/V0WaPyL.png) - 分兩群 ``` * 數量 (Group 0): 47 (Group 1): 53 ``` ![](https://i.imgur.com/TVjLw78.png) ### Type 2 (直接以純數字的數值作為hash value - 分五群 ``` * 數量 (Group 0): 85 (Group 1): 10 (Group 2): 1 (Group 3): 2 (Group 4): 2 ``` ![](https://i.imgur.com/a2J4UxS.png) - 分兩群 ``` * 數量 (Group 0): 11 (Group 1): 89 ``` ![](https://i.imgur.com/48FVINP.png) ## 總結 接著會繼續嘗試其他 hash function 確認效果,threshold 輸出清單也已確認排序部分能夠正常顯示。