機器學習及其KNN算法

一、機器學習概述

機器學習(Machine Learning, ML)是人工智能的核心分支,旨在通過算法讓計算機從數據中自動學習規律并優化性能,而無需顯式編程。這一技術領域起源于20世紀50年代,隨著計算能力的提升和大數據時代的到來,在21世紀得到了迅猛發展。

1. 基本概念

機器學習通過數據訓練模型,使其能夠識別模式、做出預測或決策。與傳統編程不同,機器學習系統不是通過直接編寫規則,而是通過分析大量數據來"學習"如何完成任務。

2. 核心思想

其核心是"從經驗中自動改進",這一思想模仿了人類的學習過程。機器學習系統通過不斷調整內部參數,逐步提高在特定任務上的表現。

3. 關鍵三要素

機器學習的實現依賴于三大基本要素:

  • 數據:訓練材料,包括結構化數據(如數據庫表格)和非結構化數據(如文本、圖像)
  • 模型:輸入到輸出的映射函數,如決策樹、神經網絡等
  • 算法:優化方法如梯度下降、隨機梯度下降等

機器學習算法分類

1. 監督學習(Supervised Learning)

監督學習使用標注數據訓練模型,需要提供輸入數據和對應的正確輸出(標簽)。主要應用包括:

  • 分類:預測離散類別

    • 垃圾郵件識別(二分類)
    • 手寫數字識別(多分類)
    • 醫療影像診斷(如識別腫瘤類型)
  • 回歸:預測連續數值

    • 房價預測(基于面積、位置等特征)
    • 股票價格預測
    • 銷售預測

常用算法:

  • 線性回歸
  • 邏輯回歸
  • 支持向量機(SVM)
  • 決策樹
  • 隨機森林

2. 無監督學習(Unsupervised Learning)

無監督學習從無標簽數據中發現隱藏的結構和模式。主要應用包括:

  • 聚類

    • K-Means:客戶細分、文檔分類
    • 層次聚類:生物學的物種分類
    • DBSCAN:異常檢測
  • 降維

    • 主成分分析(PCA):數據可視化、特征提取
    • t-SNE:高維數據可視化
    • 自編碼器:圖像壓縮
  • 關聯規則學習

    • 購物籃分析(啤酒與尿布)
    • 推薦系統

3. 強化學習(Reinforcement Learning)

強化學習通過環境交互學習最優策略,其核心是"試錯學習"。主要特點包括:

  • 應用場景

    • 游戲AI(AlphaGo、星際爭霸AI)
    • 機器人控制(行走、抓取)
    • 自動駕駛決策
    • 金融交易策略
  • 關鍵概念

    • 智能體(Agent)
    • 環境(Environment)
    • 獎勵(Reward)
    • 策略(Policy)
  • 算法分類

    • 基于價值的方法(Q-Learning)
    • 基于策略的方法(Policy Gradients)
    • Actor-Critic方法

機器學習庫

在Python中進行機器學習開發時,Scikit-learn是最常用的機器學習庫之一。它提供了各種監督學習和無監督學習算法,以及數據預處理、模型評估等工具,是機器學習入門和實踐的最佳選擇

pip install scikit-learn ==1.0.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
#篇使用版本為1.0.2
#導入方法如下
import sklearn

二、KNN(K-Nearest Neighbors,K近鄰)算法

1.核心思想?

KNN是一種基于實例的監督學習算法,其核心假設是“相似的數據點在特征空間中彼此靠近”。通過計算待預測樣本與訓練集中所有樣本的距離,選擇最近的K個鄰居,根據這些鄰居的類別(分類任務)或數值(回歸任務)進行預測。本篇以分類為主。

算法步驟?

數據準備

標準化/歸一化特征:消除量綱差異對距離計算的影響(如使用StandardScaler)

  • 詳細步驟:
    1. 計算每個特征的均值(μ)和標準差(σ)
    2. 對每個特征值x進行變換:(x-μ)/σ
    3. 示例:若特征A的范圍是0-1000,特征B的范圍是0-1,標準化后兩個特征都服從均值為0、標準差為1的分布
  • 應用場景:當特征的單位不同(如身高cm vs 體重kg)或數值范圍差異較大時

距離計算

常用距離度量:

歐氏距離(默認):適用于連續特征

  • 公式:d(x,y)=√(∑(x_i-y_i)^2)
  • 幾何解釋:兩點在n維空間中的直線距離
  • 示例:在二維空間中,點(1,3)和(4,7)的距離為√((1-4)^2 + (3-7)^2)=5

曼哈頓距離:適用于網格路徑數據

  • 公式:d(x,y)=∑|x_i-y_i|
  • 別稱:城市街區距離
  • 適用場景:棋盤格移動、城市道路規劃等網格狀路徑系統
  • 示例:在二維網格中,(1,3)到(4,7)的距離為|1-4| + |3-7|=7

選擇K個最近鄰

按距離排序,選取前K個樣本

  • 關鍵步驟:
    1. 計算待分類樣本與所有訓練樣本的距離
    2. 將所有距離按從小到大排序
    3. 選擇距離最小的K個樣本
  • 注意事項:K值通常取奇數(如3/5/7)以避免平票情況

投票決策

統計K個鄰居的類別頻率,將待分類樣本劃入頻率最高的類別

  • 具體流程:
    1. 統計K個鄰居中每個類別出現的次數
    2. 選擇出現次數最多的類別作為預測結果
    3. 平票處理:可隨機選擇或考慮更小的K值
  • 擴展:也可使用加權投票,距離近的鄰居投票權重更大

數據準備

標準化/歸一化特征:消除量綱差異對距離計算的影響(如使用StandardScaler)

  • 詳細步驟:
    1. 計算每個特征的均值(μ)和標準差(σ)
    2. 對每個特征值x進行變換:(x-μ)/σ
    3. 示例:若特征A的范圍是0-1000,特征B的范圍是0-1,標準化后兩個特征都服從均值為0、標準差為1的分布
  • 應用場景:當特征的單位不同(如身高cm vs 體重kg)或數值范圍差異較大時

距離計算

常用距離度量:

歐氏距離(默認):適用于連續特征

  • 公式:
  • 幾何解釋:兩點在n維空間中的直線距離
  • 示例:在二維空間中,點(1,3)和(4,7)的距離為√((1-4)^2 + (3-7)^2)=5

曼哈頓距離:適用于網格路徑數據

  • 公式:
  • 別稱:城市街區距離
  • 適用場景:棋盤格移動、城市道路規劃等網格狀路徑系統
  • 示例:在二維網格中,(1,3)到(4,7)的距離為|1-4| + |3-7|=7

選擇K個最近鄰

按距離排序,選取前K個樣本

  • 關鍵步驟:
    1. 計算待分類樣本與所有訓練樣本的距離
    2. 將所有距離按從小到大排序
    3. 選擇距離最小的K個樣本
  • 注意事項:K值通常取奇數(如3/5/7)以避免平票情況

投票決策

統計K個鄰居的類別頻率,將待分類樣本劃入頻率最高的類別

  • 具體流程:
    1. 統計K個鄰居中每個類別出現的次數
    2. 選擇出現次數最多的類別作為預測結果
    3. 平票處理:可隨機選擇或考慮更小的K值
  • 擴展:也可使用加權投票,距離近的鄰居投票權重更大

關鍵參數與優化??

  • 關鍵參數與優化

    K值選擇

    K值的選擇直接影響KNN模型的性能:

  • K值過小(如K=1)
    • 模型會過于關注局部噪聲點,導致過擬合
    • 決策邊界變得非常復雜且不規則
    • 示例:在圖像分類中,K=1可能導致對個別異常像素過于敏感
  • K值過大
    • 模型會忽略數據的局部特征,導致欠擬合
    • 決策邊界過度平滑,可能錯過重要模式
    • 示例:在房價預測中,過大的K值可能使不同社區的房價差異被平均化
    • 優化方法

    • 交叉驗證:
      • 采用k折交叉驗證(如5折或10折)評估不同K值
      • 網格搜索:系統性地測試K值范圍(如1-20)
    • 經驗法則:
      • K≈√n(n為訓練樣本數)
      • 通常選擇奇數K值以避免平票情況
      • 對于分類問題,初始可嘗試K=3,5,7等小值

三、knn算法的運用

class sklearn.neighbors.KNeighborsClassifier( n_neighbors=5, weights='uniform', algorithm='auto', leaf_size=30, p=2, metric='minkowski', metric_params=None, n_jobs=None)

參數名

類型/選項

默認值

作用

n_neighbors

int

5

近鄰數K,決定投票的樣本數量

weights

'uniform',?'distance'或可調用對象

'uniform'

權重分配方式:
-?'uniform':等權重投票
-?'distance':按距離反比加權

algorithm

'auto',?'ball_tree',?'kd_tree',?'brute'

'auto'

近鄰搜索算法:
-?'ball_tree'/'kd_tree':樹結構加速搜索(維度<20時高效)
-?'brute':暴力搜索(適合小數據集)

p

int

2

閔可夫斯基距離的冪參數:
-?p=1:曼哈頓距離
-?p=2:歐氏距離

metric

str或可調用對象

'minkowski'

距離度量標準(如'cosine''euclidean'

n_jobs

int或None

None

并行計算線程數(-1表示使用所有CPU核心)

法名

功能

示例

fit(X, y)

存儲訓練數據(惰性學習)

knn.fit(X_train, y_train)

predict(X)

返回預測類別

y_pred = knn.predict(X_test)

predict_proba(X)

返回樣本屬于各類別的概率(基于鄰居類別的頻率)

prob = knn.predict_proba([[1.5]])→?[[0.6, 0.4]]

score(X, y)

計算準確率(分類)或R2分數(回歸)

accuracy = knn.score(X_test, y_test)

kneighbors(X)

返回K近鄰的索引和距離

dist, indices = knn.kneighbors([[0.5]])

四、算法示例

from matplotlib import pyplot as plt
import numpy as np#knn算法預測
from sklearn.neighbors import KNeighborsClassifier
data = np.loadtxt('datingTestSet2.txt', delimiter='\t')
neigh = KNeighborsClassifier(n_neighbors=5)
x=data[:800,:-1]
y=data[:800,-1]
neigh.fit(x,y)
print(neigh.score(x,y))#準確率,自測
c1=data[800:,:-1]
c2=data[800:,-1]
right=neigh.score(c1,c2)
print(right)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/94771.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/94771.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/94771.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Kaggle 經典競賽泰坦尼克號:超級無敵爆炸詳細基礎逐行講解Pytorch實現代碼,看完保證你也會!!!

講解代碼分為3個步驟&#xff1a;有什么用&#xff0c;為什么需要他&#xff0c;如何使用保證大家耐心看完一定大有裨益&#xff01;如果有懂的可以跳過&#xff0c;不過建議可以看完&#xff0c;查漏補缺嘛。現在開始吧&#xff01;項目目標我們的目標是根據泰坦尼克號乘客的個…

雙目標定中旋轉矩陣參數應用及旋轉角度計算(聚焦坐標系平行)

一、引言 在雙目視覺系統開發中&#xff0c;若需實現右相機坐標系與左相機坐標系平行&#xff0c;核心在于通過雙目標定獲取的旋轉矩陣RRR&#xff0c;消除兩相機間的相對旋轉。本報告聚焦旋轉矩陣的物理意義與工程應用&#xff0c;詳細說明如何通過旋轉矩陣計算相對旋轉角度&a…

GraphRAG 入門教程:從原理到實戰

GraphRAG 入門教程&#xff1a;從原理到實戰 1. 什么是 GraphRAG&#xff1f; GraphRAG 是一種結構化的、分層的檢索增強生成&#xff08;Retrieval-Augmented Generation&#xff0c;簡稱 RAG&#xff09;方法 和傳統的 RAG 不同&#xff0c;GraphRAG 不僅僅依賴文本相似度搜索…

系統集成項目管理工程師【第十一章 規劃過程組】規劃成本管理、成本估算、制定預算和規劃質量管理篇

系統集成項目管理工程師【第十一章 規劃過程組】規劃成本管理、成本估算、制定預算和規劃質量管理篇 一、規劃成本管理&#xff1a;為成本管控定方向 規劃成本管理是項目成本管理的起點&#xff0c;其核心是明確“如何管”的規則&#xff0c;為整個項目的成本管理提供統一框架。…

Xiphos Q8 SDR DOCK子板 AD9361 寬帶收發器的 SDR 模塊。

Q8 混合處理器卡的子板&#xff0c;包含基于 ADI 公司流行的 AD9361 寬帶收發器的 SDR 模塊。與基于 AD9361 的 SDR 模塊接口PPS、CAN總線、串行、UART&#xff08;LVDS&#xff09;、USB接口電源接口&#xff08;5V、12V&#xff09; Q8 處理器卡的子板&#xff0c;集成了基于…

DPU(數據處理單元)架構中,SoC(系統級芯片)與FPGA(現場可編程門陣列)之間的數據交互

在DPU&#xff08;數據處理單元&#xff09;架構中&#xff0c;SoC&#xff08;系統級芯片&#xff09;與FPGA&#xff08;現場可編程門陣列&#xff09;之間的數據交互是實現高效異構計算的關鍵。根據通信目標和硬件特性&#xff0c;其交互數據類型可分為以下四類&#xff1a;…

圖論(鄰接表)DFS

競賽中心 - 藍橋云課 #include<bits/stdc.h> using namespace std; #define int long long const int A1e51; typedef pair<int,int>p; map<p,int>st; vector<p>edge[A]; int a[A]; int result0; bool dfs(int s,int u,int father,int v,int sum) {i…

深入理解VideoToolbox:iOS/macOS視頻硬編解碼實戰指南

引言&#xff1a;VideoToolbox框架概述 VideoToolbox是Apple提供的底層框架&#xff0c;首次在WWDC2014上推出&#xff0c;為iOS和macOS開發者提供直接訪問硬件編碼器和解碼器的能力。作為Core Media框架的重要組成部分&#xff0c;VideoToolbox專注于視頻壓縮、解壓縮以及Cor…

Python基礎語法練習

本文涵蓋了 Python 基礎編程中的多個重要概念&#xff0c;從簡單的輸出語句到運算符、字符串操作、變量賦值等都有涉及。這些例子非常適合初學者學習和理解 Python 的基本語法。1. Hello World# 輸出Hello Worldprint("Hello, World!")2. 變量賦值# 創建變量并賦值na…

關于“致命錯誤:‘https://github.com/....git/‘ 鑒權失敗”

問題分析 錯誤信息&#xff1a; remote: Invalid username or token. Password authentication is not supported for Git operations. 致命錯誤&#xff1a;https://github.com/yarajia/LittleTestToolsProject.git/ 鑒權失敗原因&#xff1a;GitHub從2021年8月13日起不再支持…

基于Flask + Vue3 的新聞數據分析平臺源代碼+數據庫+使用說明,爬取今日頭條新聞數據,采集與清洗、數據分析、建立數據模型、數據可視化

介紹 本項目為新聞數據分析平臺&#xff0c;目的是爬取新聞(目前僅含爬取今日頭條)數據&#xff0c;然后對數據進行展示、采集與清洗、數據分析、建立數據模型、數據可視化。本項目采用前后端分離模式&#xff0c;前端使用 Vue3 ArcoDesign 搭建&#xff0c;后端使用 Python …

LabVIEW數字抽取濾波

?基于 LabVIEW 平臺設計數字抽取濾波器&#xff0c;用于動態測試領域&#xff0c;解決高采樣率數據的大動態范圍需求與頻帶劃分問題。方案替換硬件為可靠性優異的品牌&#xff0c;通過虛擬儀器架構實現信號處理功能&#xff0c;為動態信號分析提供高效、可復用的設計參考。應用…

云原生時代的 Linux:容器、虛擬化與分布式的基石

&#x1f4dd;個人主頁&#x1f339;&#xff1a;慌ZHANG-CSDN博客 &#x1f339;&#x1f339;期待您的關注 &#x1f339;&#x1f339; 在云計算與容器化快速發展的今天&#xff0c;Linux 已經不再只是服務器上的操作系統&#xff0c;而是整個云原生生態的底層基石。無論是運…

多場景兩階段分布式魯棒優化模型、數據驅動的綜合能源系統

基于數據驅動的綜合能源系統多場景兩階段分布式魯棒優化模型 魯棒優化是應對數據不確定性的一種優化方法&#xff0c;但單階段魯棒優化過于保守。為了解決這一問題&#xff0c;引入了兩階段魯棒優化(Two-stage Robust Optimization)以及更一般的多階段魯棒優化&#xff0c;其核…

Python實現點云PCA配準——粗配準

本節我們來介紹PCA&#xff08;主成分分析&#xff09;算法進行點云配準&#xff0c;這是一種經典的統計降維與特征提取工具&#xff0c;在三維點云處理中常被用來完成“粗配準”。其核心思想是&#xff1a;先把兩個待對齊的點云各自進行主成分分解&#xff0c;獲得各自的“主軸…

零基礎深度學習規劃路線:從數學公式到AI大模型的系統進階指南

引言在人工智能革命席卷全球的2025年&#xff0c;深度學習已成為改變行業格局的核心技術。本規劃路線整合最新教育資源與實踐方法&#xff0c;為完全零基礎的學習者構建一條從數學基礎到AI大模型的系統學習路徑。通過清華大佬的實戰課程、吳恩達的經典理論、Kaggle競賽的實戰錘…

基于Vue.js和Golang構建高效在線客服系統:前端實現與后端交互詳解

在當今互聯網時代&#xff0c;在線客服系統已成為企業與用戶溝通的重要橋梁。本文將詳細介紹如何使用Vue.js作為前端框架&#xff0c;Gin作為后端框架&#xff0c;構建一個高效的在線客服系統。一、項目背景與技術選型項目背景隨著電子商務的迅猛發展&#xff0c;用戶對即時咨詢…

虛幻GAS底層原理解剖九 (內存管理)

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄前言一、整體內存管理思路概覽二、核心對象的生命周期與托管邏輯UGameplayAbility 的管理GameplayEffect 的內存管理ActiveGameplayEffect 生命周期三、屬性&#xf…

Rust 通用庫新增 WebAssembly

1 先判斷&#xff1a;也許你的 crate 已經能跑 Wasm&#xff01;排查阻礙因素 直接文件/網絡 I/O塊式&#xff08;同步&#xff09;I/Ostd::thread 線程創建并不受支持的 C 系統庫綁定快速驗證rustup target add wasm32-unknown-unknown cargo build --target wasm32-unknown-…

java分布式定時任務

一、分布式鎖的底層實現細節&#xff08;以 Redis 為例&#xff09;分布式鎖是解決任務重復執行的核心&#xff0c;需保證原子性、超時釋放和可重入性。以下是生產級 Redis 鎖實現&#xff1a;public class RedisDistributedLock {private final RedisTemplate<String, Stri…