
- 機器學習基礎
- ML - 首頁
- ML - 簡介
- ML - 入門
- ML - 基本概念
- ML - 生態系統
- ML - Python 庫
- ML - 應用
- ML - 生命週期
- ML - 必備技能
- ML - 實現
- ML - 挑戰與常見問題
- ML - 侷限性
- ML - 現實案例
- ML - 資料結構
- ML - 數學基礎
- ML - 人工智慧
- ML - 神經網路
- ML - 深度學習
- ML - 獲取資料集
- ML - 分類資料
- ML - 資料載入
- ML - 資料理解
- ML - 資料準備
- ML - 模型
- ML - 監督學習
- ML - 無監督學習
- ML - 半監督學習
- ML - 強化學習
- ML - 監督學習 vs. 無監督學習
- 機器學習資料視覺化
- ML - 資料視覺化
- ML - 直方圖
- ML - 密度圖
- ML - 箱線圖
- ML - 相關矩陣圖
- ML - 散點矩陣圖
- 機器學習統計學
- ML - 統計學
- ML - 均值、中位數、眾數
- ML - 標準差
- ML - 百分位數
- ML - 資料分佈
- ML - 偏度和峰度
- ML - 偏差和方差
- ML - 假設
- ML中的迴歸分析
- ML - 迴歸分析
- ML - 線性迴歸
- ML - 簡單線性迴歸
- ML - 多元線性迴歸
- ML - 多項式迴歸
- ML中的分類演算法
- ML - 分類演算法
- ML - 邏輯迴歸
- ML - K近鄰演算法 (KNN)
- ML - 樸素貝葉斯演算法
- ML - 決策樹演算法
- ML - 支援向量機
- ML - 隨機森林
- ML - 混淆矩陣
- ML - 隨機梯度下降
- ML中的聚類演算法
- ML - 聚類演算法
- ML - 基於質心的聚類
- ML - K均值聚類
- ML - K中心點聚類
- ML - 均值漂移聚類
- ML - 層次聚類
- ML - 基於密度的聚類
- ML - DBSCAN 聚類
- ML - OPTICS 聚類
- ML - HDBSCAN 聚類
- ML - BIRCH 聚類
- ML - 關聯傳播
- ML - 基於分佈的聚類
- ML - 凝聚層次聚類
- ML中的降維
- ML - 降維
- ML - 特徵選擇
- ML - 特徵提取
- ML - 向後剔除法
- ML - 前向特徵構造
- ML - 高相關性過濾
- ML - 低方差過濾
- ML - 缺失值比例
- ML - 主成分分析
- 強化學習
- ML - 強化學習演算法
- ML - 利用與探索
- ML - Q學習
- ML - REINFORCE 演算法
- ML - SARSA 強化學習
- ML - 演員-評論家方法
- 深度強化學習
- ML - 深度強化學習
- 量子機器學習
- ML - 量子機器學習
- ML - 基於Python的量子機器學習
- 機器學習雜項
- ML - 效能指標
- ML - 自動化工作流
- ML - 提升模型效能
- ML - 梯度提升
- ML - 自舉匯聚 (Bagging)
- ML - 交叉驗證
- ML - AUC-ROC 曲線
- ML - 網格搜尋
- ML - 資料縮放
- ML - 訓練和測試
- ML - 關聯規則
- ML - Apriori 演算法
- ML - 高斯判別分析
- ML - 成本函式
- ML - 貝葉斯定理
- ML - 精度和召回率
- ML - 對抗性
- ML - 堆疊
- ML - 輪次
- ML - 感知器
- ML - 正則化
- ML - 過擬合
- ML - P值
- ML - 熵
- ML - MLOps
- ML - 資料洩露
- ML - 機器學習的商業化
- ML - 資料型別
- 機器學習 - 資源
- ML - 快速指南
- ML - 速查表
- ML - 面試問題
- ML - 有用資源
- ML - 討論
機器學習 - 分類演算法
分類是一種監督學習技術,它根據一組輸入特徵預測分類目標變數。它通常用於解決垃圾郵件檢測、欺詐檢測、影像識別、情感分析等許多問題。
分類模型的目標是學習輸入特徵 (X) 和目標變數 (Y) 之間的對映函式 (f)。此對映函式通常表示為決策邊界,該邊界將輸入特徵空間中的不同類別分隔開。模型訓練完成後,即可用於預測新樣本的類別。
現在讓我們來看一下構建分類模型所涉及的步驟:
資料準備
第一步是收集和預處理資料。這包括資料清洗、處理缺失值以及將分類變數轉換為數值變數。
特徵提取/選擇
下一步是從資料中提取或選擇相關特徵。這是一個重要步驟,因為特徵的質量會極大地影響模型的效能。一些常見的特徵選擇技術包括相關性分析、特徵重要性排序和主成分分析。
模型選擇
選擇好特徵後,下一步是選擇合適的分類演算法。有很多不同的演算法可供選擇,每種演算法都有其自身的優點和缺點。一些流行的演算法包括邏輯迴歸、決策樹、隨機森林、支援向量機和神經網路。
模型訓練
選擇合適的演算法後,下一步是在標記的訓練資料上訓練模型。在訓練過程中,模型學習輸入特徵和目標變數之間的對映函式。模型引數會迭代調整,以最大限度地減少預測輸出與實際輸出之間的差異。
模型評估
訓練好模型後,下一步是在單獨的一組驗證資料上評估其效能。這樣做是為了估計模型的準確性和泛化效能。常見的評估指標包括準確率、精確率、召回率、F1 分數和受試者工作特徵 (ROC) 曲線下的面積。
超引數調整
在許多情況下,可以透過調整模型的超引數來進一步提高其效能。超引數是在訓練模型之前選擇的設定,用於控制學習率、正則化強度和神經網路中隱藏層的數量等方面。網格搜尋、隨機搜尋和貝葉斯最佳化是一些常用的超引數調整技術。
模型部署
訓練和評估模型後,最後一步是將其部署到生產環境中。這包括將模型整合到更大的系統中,在真實資料上進行測試,並隨著時間的推移監控其效能。
分類中的學習器型別
在分類問題中,我們有兩種型別的學習器:
懶惰學習器
顧名思義,這種學習器在儲存訓練資料後等待測試資料出現。只有在獲得測試資料後才進行分類。它們在訓練上花費的時間較少,但在預測上花費的時間較多。懶惰學習器的示例包括 K 近鄰和基於案例的推理。
積極學習器
與懶惰學習器相反,積極學習器在儲存訓練資料後,無需等待測試資料出現即可構建分類模型。它們在訓練上花費的時間較多,但在預測上花費的時間較少。積極學習器的示例包括決策樹、樸素貝葉斯和人工神經網路 (ANN)。
在 Python 中構建分類器
Scikit-learn 是一個用於機器學習的 Python 庫,可用於在 Python 中構建分類器。在 Python 中構建分類器的步驟如下:
步驟 1:匯入必要的 Python 包
要使用 scikit-learn 構建分類器,我們需要匯入它。我們可以使用以下指令碼匯入它:
import sklearn
步驟 2:匯入資料集
匯入必要的包後,我們需要一個數據集來構建分類預測模型。我們可以從 sklearn 資料集中匯入它,也可以根據我們的需要使用其他資料集。我們將使用 sklearn 的乳腺癌威斯康星診斷資料庫。我們可以使用以下指令碼匯入它:
from sklearn.datasets import load_breast_cancer
以下指令碼將載入資料集;
data = load_breast_cancer()
我們還需要組織資料,這可以透過以下指令碼完成:
label_names = data['target_names'] labels = data['target'] feature_names = data['feature_names'] features = data['data']
以下命令將列印標籤的名稱,在我們的資料庫中為 **“惡性”** 和 **“良性”**。
print(label_names)
上述命令的輸出是標籤的名稱:
['malignant' 'benign']
這些標籤對映到二進位制值 0 和 1。“惡性”癌症由 0 表示,“良性”癌症由 1 表示。
可以使用以下命令檢視這些標籤的特徵名稱和特徵值:
print(feature_names[0])
上述命令的輸出是標籤 0(即 **惡性** 癌症)的特徵名稱:
mean radius
同樣,標籤 1 的特徵名稱可以如下產生:
print(feature_names[1])
上述命令的輸出是標籤 1(即良性癌症)的特徵名稱:
mean texture
我們可以使用以下命令列印這些標籤的特徵:
print(features[0])
這將給出以下輸出:
[1.799e+01 1.038e+01 1.228e+02 1.001e+03 1.184e-01 2.776e-01 3.001e-01 1.471e-01 2.419e-01 7.871e-02 1.095e+00 9.053e-01 8.589e+00 1.534e+02 6.399e-03 4.904e-02 5.373e-02 1.587e-02 3.003e-02 6.193e-03 2.538e+01 1.733e+01 1.846e+02 2.019e+03 1.622e-01 6.656e-01 7.119e-01 2.654e-01 4.601e-01 1.189e-01]
我們可以使用以下命令列印這些標籤的特徵:
print(features[1])
這將給出以下輸出:
[2.057e+01 1.777e+01 1.329e+02 1.326e+03 8.474e-02 7.864e-02 8.690e-02 7.017e-02 1.812e-01 5.667e-02 5.435e-01 7.339e-01 3.398e+00 7.408e+01 5.225e-03 1.308e-02 1.860e-02 1.340e-02 1.389e-02 3.532e-03 2.499e+01 2.341e+01 1.588e+02 1.956e+03 1.238e-01 1.866e-01 2.416e-01 1.860e-01 2.750e-01 8.902e-02]
步驟 3:將資料組織成訓練集和測試集
由於我們需要在未見過的資料上測試我們的模型,因此我們將資料集分成兩部分:訓練集和測試集。我們可以使用 *sklearn* Python 包的 *train_test_split()* 函式將資料分成集合。以下命令將匯入該函式:
from sklearn.model_selection import train_test_split
接下來,下一條命令將資料分割成訓練集和測試集。在這個例子中,我們將40%的資料用於測試,60%的資料用於訓練。
train, test, train_labels, test_labels = train_test_split(features,labels,test_size = 0.40, random_state = 42)
步驟 4:模型評估
將資料分成訓練集和測試集後,我們需要構建模型。我們將使用樸素貝葉斯演算法來實現這個目的。以下命令將匯入GaussianNB模組:
from sklearn.naive_bayes import GaussianNB
現在,按照如下方式初始化模型:
gnb = GaussianNB()
接下來,使用以下命令訓練模型:
model = gnb.fit(train, train_labels)
現在,為了評估,我們需要進行預測。這可以透過使用predict()函式來實現,如下所示:
preds = gnb.predict(test) print(preds)
這將給出以下輸出:
[1 0 0 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 1 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 0 0 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 0 0 1 1 0 1]
輸出中的一系列0和1是惡性和良性腫瘤類別的預測值。
步驟 5:查詢準確率
我們可以透過比較兩個陣列,即test_labels和preds,來找到前面步驟中構建的模型的準確率。我們將使用accuracy_score()函式來確定準確率。
from sklearn.metrics import accuracy_score print(accuracy_score(test_labels,preds)) 0.951754385965
上述輸出顯示樸素貝葉斯分類器的準確率為95.17%。
分類評估指標
即使你完成了機器學習應用程式或模型的實現,工作也並沒有完成。我們必須找出我們的模型有多有效?可能存在不同的評估指標,但我們必須仔細選擇它,因為指標的選擇會影響如何衡量和比較機器學習演算法的效能。
以下是一些重要的分類評估指標,你可以根據你的資料集和問題型別選擇:
混淆矩陣
混淆矩陣 - 這是衡量分類問題的效能最簡單的方法,其中輸出可以是兩種或多種型別的類別。
各種機器學習分類演算法
以下是一些重要的機器學習分類演算法:
我們將在後面的章節中詳細討論所有這些分類演算法。
應用
分類演算法的一些最重要的應用如下:
- 語音識別
- 手寫識別
- 生物特徵識別
- 文件分類
在接下來的章節中,我們將討論機器學習中一些最流行的分類演算法。