# 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

2. feature

3. confusion_matrix

4. class_report
