---
# System prepended metadata

title: 睡眠模式行為評估
tags: [資料分析]

---

# Takeway
1. 本段分析得出前三個分數較高的模型，分別是LGBM Classifier、Logistic Regression、SGD Classifier
2. 分析出十項對於睡眠有重要影響的feature 

# 重要段落程式碼介紹
## 模型選用
```
clf = setup(df,
            session_id = 17,
            target = 'Sleep Disorder',
            train_size = 0.8,
            numeric_imputation = 'median',
            categorical_imputation = 'mode',
            normalize = True,
            normalize_method = 'zscore'
           ) 
```
這段程式碼使用了 `pycaret` 套件中的 `setup` 函式來準備資料以進行機器學習模型的訓練和評估。以下是對每個參數的解釋：

- `df`: 資料框，包含要進行分析的資料。
- `session_id`: 整數，用於重現性，確保每次執行時都使用相同的隨機種子。
- `target`: 字串，指定模型的目標變數，即你想要預測的變數。
- `train_size`: 浮點數，指定用於訓練模型的資料佔全部資料的比例。
- `numeric_imputation`: 字串，指定對數值特徵進行遺漏值填補的方法，此處使用中位數填補。
- `categorical_imputation`: 字串，指定對類別特徵進行遺漏值填補的方法，此處使用眾數填補。
- `normalize`: 布林值，表示是否對特徵進行正規化處理。
- `normalize_method`: 字串，指定正規化的方法，此處使用 Z-score 正規化方法。


## 模型評估

```
best_f1score_models_top3
```

透過 F1 分數來比較不同機器學習模型的表現，並選擇前三個分數最高的模型。以下是這三個模型的解釋：

1. `LGBMClassifier`：
   - 這是一個梯度提升樹模型，使用了 LGBM（Light Gradient Boosting Machine）演算法。
   - 參數設定包括 boosting_type、learning_rate、max_depth 等，這些參數影響模型的複雜度和學習速度。
   - 這個模型使用了預設的參數值，並在進行訓練和預測時，使用了全域的隨機種子（random_state = 17）。
   
2. `LogisticRegression`：
   - 這是一個邏輯回歸模型，用於二元分類或多元分類問題。
   - 參數設定包括 C（正規化強度）、solver（最佳化演算法）等。
   - 這個模型使用了預設的參數值，同樣也在訓練和預測時使用了隨機種子（random_state = 17）。

3. `SGDClassifier`：
   - 這是一個隨機梯度下降分類器，通常用於線性分類。
   - 參數設定包括 alpha（正規化強度）、loss（損失函數）等。
   - 這個模型使用了預設的參數值，同樣也在訓練和預測時使用了隨機種子（random_state = 17）。


## 繪製ROC curve和找出前十個feature
```
available_plots = ['pipeline','auc','pr','confusion_matrix','error','class_report','feature','parameter']

for i in available_plots:
    print('__________  ',i,'  __________',sep=' ')
    plot_model(tuned_lightgbm,plot=i)
    print('\n\n')
```
這段程式碼透過使用 `pycaret` 中的 `plot_model` 函式，來繪製已調整過的 LightGBM 模型（`tuned_lightgbm`）在不同情境下的圖表。以下是程式碼的解釋：

1. `available_plots`：這是一個包含各種不同圖表情境的清單，例如管線（pipeline）、AUC 曲線、PR 曲線、混淆矩陣、錯誤分佈、分類報告、特徵重要性、參數圖等。
2. `plot_model(tuned_lightgbm,plot=i)`：這行程式碼呼叫 `plot_model` 函式，將 `tuned_lightgbm` 模型與當前迴圈遍歷到的情境名稱 `i` 一同傳遞進去，以繪製對應情境的圖表。

1. auc
![](https://hackmd.io/_uploads/SJhoJCJ23.png)
2. feature
![](https://hackmd.io/_uploads/rJhjyC12n.png)
3. confusion_matrix
![](https://hackmd.io/_uploads/SkHKlCy32.png)
4. class_report
![](https://hackmd.io/_uploads/B1f9lRJ23.png)



