一、特點
(1)思想極度簡單
(2)應用數學知識少
(3)效果好
(4)可以解釋機器學習演算法使用過程中的很多細節問題
(5)更完整的刻畫機器學習應用的流程
二、相關概念
1、尤拉距離:
2、曼哈頓距離:
3、明可夫斯基距離(p是乙個超引數):
4、(1)k近鄰演算法是非常特殊的,可以被認為是沒有模型的演算法。
(2)為了和其他演算法統一,可以認為訓練資料集就是模型本身。
5、、分類的準確度:accuracy
6、、(1)超引數:在演算法執行前需要決定的引數
(2)模型引數:演算法過程中學習的引數
(3)knn演算法沒有模型引數
(4)knn演算法中的k 就是典型的超引數
三、資料歸一化
(1)最值歸一化:把所有資料對映到0-1之間
(2)最值歸一化適用於分布有明顯邊界的情況,受outlier(邊界)影響較大
(3)均值方差歸一化:把所有資料歸一到均值為0方差為1 的分布中
(4)均值方差歸一化適用於分布沒有明顯邊界的情況,即可能存在極端資料值
四、k鄰近演算法的實現
import numpy as np
import matplotlib.pyplot as plt
from math import sqrt
from collections import counter
raw_data_x=[[
3.393533211
,2.331273381],
[3.110073483
,1.781539638],
[1.343808831
,3.368360954],
[3.582294042
,4.679179110],
[2.280362439
,2.866990263],
[7.423436942
,4.969522875],
[5.745051997
,3.533989803],
[9.172168622
,2.511101045],
[7.792783481
,3.424088941],
[7.939820817
,0.791637231]]
raw_data_y=[0
,0,0
,0,0
,1,1
,1,1
,1]x_train=np.array(raw_data_x)
y_train=np.array(raw_data_y)
x=np.array(
[8.093607318
,3.365731514])
#繪製散點圖
plt.scatter(x_train[y_train==0,
0],x_train[y_train==0,
1],color=
'g')
plt.scatter(x_train[y_train==1,
0],x_train[y_train==1,
1],color=
'r')
plt.scatter(x[0]
,x[1
],color=
'b')
plt.show(
)#找到最鄰近的點
distances=
[sqrt(np.
sum(
(x_train-x)**2
))for x_train in x_train]
nearest=np.argsort(distances)k=6
topk_y=
[y_train[i]
for i in nearest[
:k]]
#計算不同點的個數
votes=counter(topk_y)
#找到票數最多的點
votes.most_common(1)
#找到**的值
predict_y=votes.most_common(1)
[0][
0]
k 近鄰演算法
此文章參考機器學習實戰一書,具體的理論知識可以參考該書。本文的初衷只是為了做乙個複習,將學過的知識加以整理,其中不免有一定的錯誤。2.k 近鄰演算法的原理介紹 k 近鄰演算法通過測量不同的特徵值之間的距離進行分類。它的工作原理如下 存在乙個樣本的資料集合,也成為訓練樣本集合。並且樣本集中的每個資料都...
K 近鄰演算法
k 近鄰演算法採用測量不同特徵值之間的距離方法進行分類。優點 精度高 對異常值不敏感 無資料輸入假定 缺點 計算複雜度高 空間複雜度高 適用資料範圍 數值型和標稱型 工作原理 存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入...
K 近鄰演算法
首先,我們將 k 近鄰演算法的基本理論 其次我們將使用python從文字檔案中匯入並解析資料 再次,討論當存在許多資料 的時,如何避免計算距離時可能碰到的一些常見錯誤 最後,利用實際的例子講解如何使用k 近鄰演算法改進約會 1.1 knn演算法 工作原理 存在乙個樣本資料集合,也稱作訓練樣本集,並且...