題目

使用Heart Failure Prediction Dataset做分類實驗,要使用多種分類方法。
繳交報告,說明使用方法,細節,結果,分析等。
資料: https://www.kaggle.com/fedesoriano/heart-failure-prediction

年齡 性別 胸痛類型 靜息血壓 血清膽固醇 空腹血糖 靜息心電圖結果 達到的最大心率 運動誘發的心絞痛 抑鬱症測量的數值 運動ST段的坡度 心臟病
  1. Age:患者年齡[年]
  2. Sex:患者的性別[M:男,F:女]
  3. ChestPainType:胸痛類型 [TA:典型心絞痛,ATA:非典型心絞痛,NAP:非心絞痛,ASY:無症狀]
  4. RestingBP:靜息血壓 [mm Hg]
  5. Cholesterol:血清膽固醇 [mm/dl]
  6. FastingBS:空腹血糖 [1:如果 FastingBS > 120 mg/dl,0:否則]
  7. RestingECG:靜息心電圖結果 [正常:正常,ST:有 ST-T 波異常(T 波倒置和/或 ST 抬高或壓低 > 0.05 mV),LVH:根據埃斯蒂斯標準顯示可能或明確的左心室肥大]
  8. MaxHR:達到的最大心率 [60 到 202 之間的數值]
  9. ExerciseAngina:運動誘發的心絞痛 [Y:是,N:否]
  10. Oldpeak:oldpeak = ST [抑鬱症測量的數值]
  11. ST_Slope:運動ST段的坡度[Up:向上傾斜,Flat:平坦,Down:向下傾斜]
  12. HeartDisease:輸出類[1:心髒病,0:正常]

    機器學習的七個步驟

  • 收集資料(Gathering data )
  • 準備數據(Preparing that data)
  • 選擇模型(Choosing a model)
  • 訓練機器(Training)
  • 評估分析(Evaluation)
  • 調整參數(Hyperparameter tuning)
  • 預測推論(Prediction)

    問題定義

    Classification

    監督式學習中預測的Y如果是不連續的值(項目種類),則是分類(classification)。例如:是否退租?是否回購?是否換手機?喜歡什麼顏色?…等。

    Regression

    監督式學習中預測的Y如果是連續的值,則是迴歸(Regression)。例如:預測房屋價格、預測股價、預測體重、預測購買機率…等。

🧀問題類型:分類

🧀可使用方法

【機器學習懶人包】從數據分析到模型整合,各種好用的演算法全都整理給你啦!

  1. K-近鄰演算法(K-NN)

K-NN 演算法是一種最簡單的分類演算法,透過識別被分成若干類的數據點,以預測新樣本點的分類。K-NN 是一種非參數的演算法,是「懶惰學習」的著名代表,它根據相似性(如,距離函數)對新數據進行分類。

  1. 支持向量機(SVM)

支持向量機既可用於迴歸也可用於分類。它基於定義決策邊界的決策平面。決策平面(超平面)可將一組屬於不同類的對象分開。

  1. 樸素貝氏(樸素貝葉斯)

樸素貝氏分類器建立在貝氏定理的基礎上,基於特徵之間互相獨立的假設(假定類中存在一個與任何其他特徵無關的特徵)。即使這些特徵相互依賴,或者依賴於其他特徵的存在,樸素貝氏演算法都認為這些特徵都是獨立的。這樣的假設過於理想,樸素貝氏因此而得名。

  1. 決策樹分類

決策樹以樹狀結構建構分類或迴歸模型。它透過將數據集不斷分拆成更小的子集,來使決策樹不斷生長,最終長成具有決策節點(包括根節點和內部節點)和葉節點的樹。最初的決策樹演算法,採用了 Iterative Dichotomiser 3(ID3)演算法來確定分裂節點的順序。

  1. 隨機森林分類器

隨機森林分類器是一種基於裝袋(bagging)的整合演算法,即自舉助聚合法(bootstrap aggregation)。整合演算法結合了多個相同或不同類型的演算法,來對對象進行分類(例如,SVM 的整合,基於樸素貝氏的整合或基於決策樹的整合)。

  1. 邏輯回歸

它為邏輯回歸分析(Logistic Regression, LR),是分類和預測演算法中的一種。採用的是監督學習的方式,通過分析歷史數據特徵來對未來事件發生的概率進行預測。

🧀評估方式

混淆矩陣
混淆矩陣是一張表,這張表透過對比已知分類結果的測試數據的預測值,和真值表來描述衡量分類器的性能。在二分類的情況下,混淆矩陣是展示預測值和真實值四種不同結果組合的表。
ROC曲線和AUC面積(?)

實作

image.png

classification_report 的指標分析

classification_report(y_test,y_pred)
image.png
在這個報告中:

  • y_test 爲樣本真實標籤,y_pred 爲樣本預測標籤;
  • precision:精度=正確預測的個數(TP)/被預測正確的個數(TP+FP);也就是模型預測的結果中有多少是預測正確的
  • recall:召回率=正確預測的個數(TP)/預測個數(TP+FN);也就是某個類別測試集中的總量,有多少樣本預測正確了;
  • f1-score:F1 = 2精度召回率/(精度+召回率)
  • support:當前行的類別在測試數據中的樣本總量
  • micro avg:計算所有數據下的指標值,假設全部數據 5 個樣本中有 3 個預測正確,所以 micro avg 爲 3/5=0.6
  • macro avg:每個類別評估指標未加權的平均值,比如準確率的 macro avg,(0.50+0.00+1.00)/3=0.5
  • weighted avg:加權平均,就是測試集中樣本量大的,我認爲它更重要,給他設置的權重大點;比如第一個值的計算方法,(0.501 + 0.01 + 1.0*3)/5 = 0.70

K-近鄰演算法(K-NN)

  • kNN算法中的超参数:k、weights、P;

SVM

linear:线性核函数(linear kernel)
polynomial:多项式核函数(ploynomial kernel)
RBF:径向基核函数(radical basis function)
sigmoid: 神经元的非线性作用函数核函数(Sigmoid tanh)
precomputed :用户自定义核函数

RBF內核參數

使用徑向基函數(RBF) 核訓練 SVM 時,必須考慮兩個參數:C和gamma。C所有 SVM 內核共有的參數,在訓練示例的錯誤分類與決策表面的簡單性之間進行權衡。低C使決策表面平滑,而高C旨在正確分類所有訓練示例。 gamma定義單個訓練示例的影響有多大。越大gamma,其他示例必須受到影響。
的正確選擇C和gamma是對SVM的性能至關重要。一是建議使用GridSearchCV與 C和gamma間隔成倍天南地北地選擇良好的價值觀。
第二個圖是作為C和函數的分類器交叉驗證準確度的熱圖gamma。在這個例子中,我們探索了一個相對較大的網格以進行說明。在實踐中,對數網格來自 10−3 到 103通常就足夠了。如果最佳參數位於網格的邊界上,則可以在後續搜索中沿該方向擴展。