---
# System prepended metadata

title: 帳號分群 打包程式說明文件
tags: [Progress Report]

---

# 帳號分群 打包程式說明文件

## 開發環境

### 語言
- Python

### 檔案結構

```
├── account_clustering.py		# [執行檔] 帳號分群
├── data      # [資料夾] 輸入 & 輸出資料存放
    ├── *.csv    # 欲做分群的帳號資料 (輸入)
    ├── kmeans_clusters.csv    # Kmeans 分群結果 (輸出)
```
### 環境需求

* numpy==1.18.4
* pandas==1.0.3
* tqdm==4.50.2
* matplotlib==3.2.1
* scikit-learn==0.23.2
* scipy==1.5.2

## 程式說明

### 輸入檔案格式
- 需為.csv檔
- 所有分析資料需放在同一個column (預設為nickname，可於參數設定調整)


### 參數設定

```
root_folder_path = './data/'     # 輸入輸出資料存放位置 (預設/data/)
data_filename = 'test.csv'    # 欲做分群的帳號資料檔名 (輸入)
data_column = 'nickname'  # 所取資料的欄位名稱

# Regular expression 預設為處理英文與數字組合之帳號 (可視需求做調整)
rule = re.compile(r'[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*') 
```
- 確認參數無誤即可直接執行程式

### 執行方式
```
$ python account_clustering.py 
```

- 執行後會有兩項設定(因兩參數調整頻率較高，於執行過程設定避免每次調整都改source code)
    - Kmeans 分幾群 (設定值需大於1且小於資料總數)
    ```
    How many Kmeans groups (at least 1): 
    ```
    - 選擇何群做Hierachical clustering (檢視 kmeans_clusters.csv 的 label 後決定)
    ```
    Choose one group for hierachical clustering (Range: 0 ~ k - 1): 
    ```

### 輸出結果
#### kmeans_clusters.csv
    ```
    # 欄位說明
    
    name_arr    # 帳號名稱
    values_all    # hash value
    word_len    # 帳號長度
    label    # Kmeans 分群結果
    ```
#### 彈出視窗 (matplot 圖形)
- Kmeans
    - 各群分佈
    ![](https://i.imgur.com/GeCnzIR.png)
- Hierachy
    - 細部分群樹狀圖
    ![](https://i.imgur.com/Slr6fKw.png)

- **彈出視窗皆有放大、縮小、匯出圖檔功能**

###### tags: `Progress Report`