
- 機器學習基礎
- 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 - K近鄰演算法 (KNN)
- 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 - 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 - 討論
機器學習 - K近鄰演算法 (KNN)
KNN 是一種監督學習演算法,可用於分類和迴歸問題。KNN 的核心思想是找到給定測試資料點 k 個最近的資料點,並使用這些最近鄰來進行預測。k 值是一個需要調整的超引數,它表示要考慮的鄰居數量。
對於分類問題,KNN 演算法將測試資料點分配給在 k 個最近鄰中出現頻率最高的類別。換句話說,鄰居數量最多的類別就是預測類別。
對於迴歸問題,KNN 演算法將測試資料點分配給 k 個最近鄰值的平均值。
用於衡量兩個資料點之間相似度的距離度量是影響 KNN 演算法效能的重要因素。最常用的距離度量是歐幾里德距離、曼哈頓距離和明可夫斯基距離。
KNN 演算法的工作原理
KNN 演算法可以概括為以下步驟:
載入資料 - 第一步是將資料集載入到記憶體中。這可以使用 pandas 或 numpy 等各種庫來完成。
分割資料 - 下一步是將資料分割成訓練集和測試集。訓練集用於訓練 KNN 演算法,而測試集用於評估其效能。
規範化資料 - 在訓練 KNN 演算法之前,必須規範化資料,以確保每個特徵對距離度量計算的貢獻相同。
計算距離 - 資料規範化後,KNN 演算法計算測試資料點與訓練集中每個資料點之間的距離。
選擇 k 個最近鄰 - KNN 演算法根據上一步計算的距離選擇 k 個最近鄰。
進行預測 - 對於分類問題,KNN 演算法將測試資料點分配給在 k 個最近鄰中出現頻率最高的類別。對於迴歸問題,KNN 演算法將測試資料點分配給 k 個最近鄰值的平均值。
評估效能 - 最後,使用準確率、精確率、召回率和 F1 分數等各種指標來評估 KNN 演算法的效能。
Python 實現
現在我們已經討論了 KNN 演算法的理論,讓我們使用 scikit-learn 在 Python 中實現它。Scikit-learn 是 Python 中一個流行的機器學習庫,它提供了用於分類和迴歸問題的各種演算法。
我們將使用 Iris 資料集,這是一個流行的機器學習資料集,其中包含有關三種不同鳶尾花物種的資訊。該資料集具有四個特徵,包括萼片長度、萼片寬度、花瓣長度和花瓣寬度,以及一個目標變數,即花的種類。
要在 Python 中實現 KNN,我們需要遵循前面提到的步驟。以下是使用 Iris 資料集在 Python 中實現 KNN 的程式碼:
示例
# import libraries from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score # load the Iris dataset iris = load_iris() #split the data into training and test sets X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.35, random_state=42) #normalize the data scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) #initialize the KNN algorithm knn = KNeighborsClassifier(n_neighbors=5) #train the KNN algorithm knn.fit(X_train, y_train) #make predictions on the test set y_pred = knn.predict(X_test) #evaluate the performance of the KNN algorithm accuracy = accuracy_score(y_test, y_pred) print("Accuracy: {:.2f}%".format(accuracy*100))
輸出
執行此程式碼時,將產生以下輸出:
Accuracy: 98.11%