【機器學習】嘿馬機器學習(算法篇)第15篇:機器學習算法定位、目標,1.1 K-近鄰算法簡介【附代碼文檔】

??????教程全知識點簡介:1.定位、目標。2. K-近鄰算法涵蓋距離度量、k值選擇、kd樹、鳶尾花種類預測數(shù)據(jù)集介紹、練一練、交叉驗證網格搜索、facebook簽到位置預測案例。3. 線性回歸包括線性回歸簡介、線性回歸損失和優(yōu)化、梯度下降法介紹、波士頓房價預測案例、欠擬合和過擬合、正則化線性模型、正規(guī)方程推導方式、梯度下降法算法比較優(yōu)化、維災難。4. 邏輯回歸涵蓋邏輯回歸介紹、癌癥分類預測案例(良惡性乳腺癌腫瘤預測、獲取數(shù)據(jù))、ROC曲線繪制。5. 樸素貝葉斯算法包括樸素貝葉斯算法簡介、概率基礎復習、產品評論情感分析案例(取出內容列數(shù)據(jù)分析、判定評判標準好評差評)。6. 支持向量機涵蓋SVM算法原理、SVM損失函數(shù)、數(shù)字識別器案例。7. 決策樹算法包括決策樹分類原理、cart剪枝、特征工程特征提取、決策樹算法api、泰坦尼克號乘客生存預測案例。8. EM算法涵蓋初識EM算法、EM算法介紹。9. HMM模型包括馬爾科夫鏈、HMM簡介、前向后向算法評估觀察序列概率、維特比算法解碼隱藏狀態(tài)序列、HMM模型API介紹。10. 集成學習進階涵蓋Bagging、xgboost算法原理、otto案例(Otto Group Product Classification Challenge xgboost實現(xiàn))、數(shù)據(jù)變化可視化、lightGBM、stacking算法基本思想、住房月租金預測。11. 聚類算法包括聚類算法api初步使用、聚類算法實現(xiàn)流程、模型評估、算法優(yōu)化、特征降維、用戶對物品類別喜好細分案例、算法選擇指導。12. 數(shù)學基礎涵蓋向量與矩陣范數(shù)、朗格朗日乘子法、Huber Loss、極大似然函數(shù)取對數(shù)原因。


????倉庫code.zip ??直接-->:???https://gitee.com/yinuo112/AI/blob/master/機器學習/嘿馬機器學習(算法篇)/note.md ???????

? 本教程項目亮點

?? 知識體系完整:覆蓋從基礎原理、核心方法到高階應用的全流程內容
?? 全技術鏈覆蓋:完整前后端技術棧,涵蓋開發(fā)必備技能
?? 從零到實戰(zhàn):適合 0 基礎入門到提升,循序漸進掌握核心能力
?? 豐富文檔與代碼示例:涵蓋多種場景,可運行、可復用
?? 工作與學習雙參考:不僅適合系統(tǒng)化學習,更可作為日常開發(fā)中的查閱手冊
?? 模塊化知識結構:按知識點分章節(jié),便于快速定位和復習
?? 長期可用的技術積累:不止一次學習,而是能伴隨工作與項目長期參考


??????全教程總章節(jié)


??????本篇主要內容

機器學習算法定位、目標

定位

  • 以算法、案例為驅動的學習,伴隨淺顯易懂的數(shù)學知識
  • 作為人工智能領域的提升,掌握更深更有效的解決問題技能

目標

  • 掌握機器學習常見算法原理
  • 應用Scikit-learn實現(xiàn)機器學習算法的應用,
  • 結合場景解決實際問題

1.1 K-近鄰算法簡介

學習目標

  • 目標

    • 了解什么是KNN算法
    • 知道KNN算法求解過程

1 什么是K-近鄰算法

  • 根據(jù)你的“鄰居”來推斷出你的類別

1.1 K-近鄰算法(KNN)概念

K Nearest Neighbor算法又叫KNN算法,這個算法是機器學習里面一個比較經典的算法, 總體來說KNN算法是相對比較容易理解的算法

  • 定義

如果一個樣本在特征空間中的k個最相似(即特征空間中最鄰近)的樣本中的大多數(shù)屬于某一個類別,則該樣本也屬于這個類別。

來源:KNN算法最早是由Cover和Hart提出的一種分類算法

  • 距離公式

兩個樣本的距離可以通過如下公式計算,又叫歐式距離 ,關于距離公式會在后面進行討論

1.2 電影類型分析

假設 現(xiàn)在有幾部電影

其中? 號電影不知道類別,如何去預測? 可以利用K近鄰算法的思想

分別計算每個電影和被預測電影的距離,然后求解

1.3 KNN算法流程總結

1)計算已知類別數(shù)據(jù)集中的點與當前點之間的距離

2)按距離遞增次序排序

3)選取與當前點距離最小的k個點

4)統(tǒng)計前k個點所在的類別出現(xiàn)的頻率

5)返回前k個點出現(xiàn)頻率最高的類別作為當前點的預測分類

2 小結

  • K-近鄰算法簡介【了解】

    • 定義:就是通過你的"鄰居"來判斷你屬于哪個類別
    • 如何計算你到你的"鄰居"的距離:一般時候,都是使用歐氏距離

1.2 k近鄰算法api初步使用

學習目標

  • 目標

    • 了解sklearn工具的優(yōu)點和包含內容
    • 應用sklearn中的api實現(xiàn)KNN算法的簡單使用

  • 機器學習流程復習:
  • 1.獲取數(shù)據(jù)集
  • 2.數(shù)據(jù)基本處理
  • 3.特征工程
  • 4.機器學習
  • 5.模型評估

1 Scikit-learn工具介紹

  • Python語言的機器學習工具
  • Scikit-learn包括許多知名的機器學習算法的實現(xiàn)
  • Scikit-learn文檔完善,容易上手,豐富的API
  • 目前穩(wěn)定版本0.19.1

1.1 安裝

pip3 install scikit-learn==0.19.1

安裝好之后可以通過以下命令查看是否安裝成功

import sklearn
  • 注:安裝scikit-learn需要Numpy, Scipy等庫

1.2 Scikit-learn包含的內容

  • 分類、聚類、回歸
  • 特征工程
  • 模型選擇、調優(yōu)

2 K-近鄰算法API

  • sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)

    • n_neighbors:int,可選(默認= 5),k_neighbors查詢默認使用的鄰居數(shù)

3 案例

3.1 步驟分析

  • 1.獲取數(shù)據(jù)集
  • 2.數(shù)據(jù)基本處理(該案例中省略)
  • 3.特征工程(該案例中省略)
  • 4.機器學習
  • 5.模型評估(該案例中省略)

3.2 代碼過程

  • 導入模塊
from sklearn.neighbors import KNeighborsClassifier
  • 構造數(shù)據(jù)集
x = [[0], [1], [2], [3]]
y = [0, 0, 1, 1]
  • 機器學習 -- 模型訓練
  
  
# 實例化API
  
  
estimator = KNeighborsClassifier(n_neighbors=2)
  
  
# 使用fit方法進行訓練
  
  
estimator.fit(x, y)

estimator.predict([[1]])

4 小結

  • sklearn的優(yōu)勢:

    • 文檔多,且規(guī)范
    • 包含的算法多
    • 實現(xiàn)起來容易
  • knn中的api

    • sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)

問題

1.距離公式,除了歐式距離,還有哪些距離公式可以使用?

2.選取K值的大?。?/p>

3.api中其他參數(shù)的具體含義?

K-近鄰算法

學習目標

  • 掌握K-近鄰算法實現(xiàn)過程
  • 知道K-近鄰算法的距離公式
  • 知道K-近鄰算法的超參數(shù)K值以及取值問題
  • 知道kd樹實現(xiàn)搜索的過程
  • 應用KNeighborsClassifier實現(xiàn)分類
  • 知道K-近鄰算法的優(yōu)缺點
  • 知道交叉驗證實現(xiàn)過程
  • 知道超參數(shù)搜索過程
  • 應用GridSearchCV實現(xiàn)算法參數(shù)的調優(yōu)

1.3 距離度量

學習目標

  • 目標

    • 知道機器學習中常見的距離計算公式

Python 語言參考

1 歐式距離(Euclidean Distance):

歐氏距離是最容易直觀理解的距離度量方法, 小學、初中和高中接觸到的兩個點在空間中的距離一般都是指歐氏距離。

舉例:

X=[[1,1],[2,2],[3,3],[4,4]];
經計算得:
d = 1.4142    2.8284    4.2426    1.4142    2.8284    1.4142

PyPDF2 文檔

2 曼哈頓距離(Manhattan Distance):

在曼哈頓街區(qū)要從一個十字路口開車到另一個十字路口,駕駛距離顯然不是兩點間的直線距離。這個實際駕駛距離就是“曼哈頓距離”。曼哈頓距離也稱為“城市街區(qū)距離”(City Block distance)。

舉例:

X=[[1,1],[2,2],[3,3],[4,4]];
經計算得:
d =   2     4     6     2     4     2

python-docx 文檔

3 切比雪夫距離 (Chebyshev Distance):

Kivy 文檔

國際象棋中,國王可以直行、橫行、斜行,所以國王走一步可以移動到相鄰8個方格中的任意一個。國王從格子(x1,y1)走到格子(x2,y2)最少需要多少步?這個距離就叫切比雪夫距離。

舉例:

X=[[1,1],[2,2],[3,3],[4,4]];
經計算得:
d =   1     2     3     1     2     1

4 閔可夫斯基距離(Minkowski Distance):

python-multipart 文檔

閔氏距離不是一種距離,而是一組距離的定義,是對多個距離度量公式的概括性的表述。

兩個n維變量a(x11,x12,…,x1n)與b(x21,x22,…,x2n)間的閔可夫斯基距離定義為:

其中p是一個變參數(shù):

當p=1時,就是曼哈頓距離;

當p=2時,就是歐氏距離;

當p→∞時,就是切比雪夫距離。

根據(jù)p的不同,閔氏距離可以表示某一類/種的距離。

小結:

1 閔氏距離,包括曼哈頓距離、歐氏距離和切比雪夫距離都存在明顯的缺點:

e.g. 二維樣本(身高[單位:cm],體重[單位:kg]),現(xiàn)有三個樣本:a(180,50),b(190,50),c(180,60)。

a與b的閔氏距離(無論是曼哈頓距離、歐氏距離或切比雪夫距離)等于a與c的閔氏距離。但實際上身高的10cm并不能和體重的10kg劃等號。

2 閔氏距離的缺點:

(1)將各個分量的量綱(scale),也就是“單位”相同的看待了;

(2)未考慮各個分量的分布(期望,方差等)可能是不同的。


5 標準化歐氏距離 (Standardized EuclideanDistance):

標準化歐氏距離是針對歐氏距離的缺點而作的一種改進。

思路:既然數(shù)據(jù)各維分量的分布不一樣,那先將各個分量都“標準化”到均值、方差相等。

S_k表示各個維度的標準差

如果將方差的倒數(shù)看成一個權重,也可稱之為加權歐氏距離(Weighted Euclidean distance)。

舉例:

X=[[1,1],[2,2],[3,3],[4,4]];(假設兩個分量的標準差分別為0.5和1)
經計算得:
d =   2.2361    4.4721    6.7082    2.2361    4.4721    2.2361

6 余弦距離(Cosine Distance)

幾何中,夾角余弦可用來衡量兩個向量方向的差異;機器學習中,借用這一概念來衡量樣本向量之間的差異。

  • 二維空間中向量A(x1,y1)與向量B(x2,y2)的夾角余弦公式:
  • 兩個n維樣本點a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夾角余弦為:

即:

夾角余弦取值范圍為[-1,1]。余弦越大表示兩個向量的夾角越小,余弦越小表示兩向量的夾角越大。當兩個向量的方向重合時余弦取最大值1,當兩個向量的方向完全相反余弦取最小值-1。

舉例:

X=[[1,1],[1,2],[2,5],[1,-4]]
經計算得:
d =   0.9487    0.9191   -0.5145    0.9965   -0.7593   -0.8107

7 漢明距離(Hamming Distance)【了解】:

兩個等長字符串s1與s2的漢明距離為:將其中一個變?yōu)榱硗庖粋€所需要作的最小字符替換次數(shù)。

例如:

The Hamming distance between "1011101" and "1001001" is 
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容