K 近鄰演算法

2021-10-21 10:18:43 字數 3793 閱讀 5401

1.定義

就是通過你的鄰居來判斷你屬於哪個類別

2.如何計算你到你鄰居的距離

一般時,都是用歐氏距離

1.sklearn

優勢:1.文件多,且規範

2.包含演算法多

3.實現容易

2.sklearn內容包含

分類、聚類、回歸

特徵工程

模型選擇、調優

3.sklearn中api

sklearn.neighbors.kneighborsclassifier(n_neighbors=5)

引數4.機器學習實現過程

1.例項化乙個估計器

2.使用fit方法進行訓練

1.歐氏距離

通過距離平方值進行計算

2.麥哈頓距離

通過距離的絕對值進行計算

3.切比雪夫距離

維度的最大值進行計算

4.閔可夫斯基距離

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

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

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

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

小結:前面四個距離公式都把單位相同的看待,所以,計算過程不是很科學

5.標準化歐氏距離

在計算過程中新增了標準差,對量綱資料進行處理

6.余弦距離

通過cos思想完成

7.漢明距離

乙個字串到另乙個字串需要變成字母,進行統計

8.傑卡德距離

通過交並集進行統計

9.馬氏距離

通過樣本分佈計算

1.k值過小 容易受到異常點影響  過擬合

2.k值過大 容易受到樣本均衡問題 欠擬合

拓展:近似誤差 ---過擬合

----在訓練集上表現好,測試集表現不好

估計誤差好才是真的好

一.構建樹

第一次:

第一次:

x軸-- 2,5,9,4,8,7 --> 2,4,5,7,8,9

y軸-- 3,4,6,7,1,2 --> 1,2,3,4,6,7

首先選擇x軸, 找中間點,發現是(7,2)

第二次:

左面: (2,3), [4,7], [5,4] --> 3,4,7

右面: (8,1), (9,6) --> 1,6

從y軸開始選擇, 左邊選擇點是(5,4),右邊選擇點(9,6)

第三次:

從x軸開始選擇

二.搜尋

1.在本域內,沒有進行跨域搜尋

2.要跨到其他與搜尋

1.獲取資料集

sklearn.datasets.

小資料集:

sklearn.datasets.load_*

大資料集:

sklearn.datasets.fetch_*

subset --- 表示獲取到的資料集型別

2.資料集返回值介紹

返回值是bunch 是乙個字典型別

返回值的屬性:

data:特徵資料陣列,是 [n_samples * n_features] 的二維 numpy.ndarray 陣列

target:標籤陣列,是 n_samples 的一維 numpy.ndarray 陣列

descr:資料描述

feature_names:特徵名,新聞資料,手寫數字、回歸資料集沒有

target_names:標籤名

3.資料視覺化

import seaborn

seaborn.lmplot()

引數x,y --- 具體 x軸 y軸資料

data --- 真實資料

hue ----目標值是什麼

fit --- reg 是否進行線性擬合

4.資料集劃分

api:sklearn.model_selection.train_test_split(arrays, *options)

引數:x---特徵值

y---目標值

test-size---測試集大小

random_state-----隨機數種子

返回值:

x_train,x_test,y_train,y_test,

1.定義 

通過一些轉換函式將特徵資料轉換成更加適合演算法模型的特徵資料過程

2.包含內容

歸一化標準化

3.api

sklearn.preprocessing

4.歸一化

定義:通過對原始資料進行變換把資料對映到(預設為[0,1])之間

api:

sklearn.preprocessing.minmaxscaler (feature_range=(0,1)… )

引數:feature_range ---自己指定範圍,預設0-1

總結:魯棒性差(容易受到異常值影響)

只適合精確小資料場景(以後不會用他)

5.標準化

定義:通過對原始資料進行變換把資料變換到均值為0,標準差為1範圍內

api:

sklearn.preprocessing.standardscaler( )

總結:異常值對他影響小

適合現代嘈雜資料(以後經常使用)

1.api

sklearn.neighbors.kneighborsclassifier(n_neighbors=5,algorithm='auto')

algorithm: -- 選擇什麼樣演算法進行計算

auto ball tree kd_tree brute

2.案例實現流程

1.獲取資料集

2.資料基本處理

3.特徵工程

4.機器學習(模型訓練)

5.模型評估

優點:

1.簡潔有效

2.重新訓練代價底

3.適合類域交叉樣本

4.適合大樣本自動分類

缺點: 1.惰性學習

2.類別評分不是規格化

3.輸出可解釋性不強

4.對不均衡的樣本不擅長

樣本不均衡:收集到的資料每個類別佔比嚴重失衡

5.計算量較大

1.交叉驗證

1.定義

將拿到的測試資料,分為訓練和驗證集

*折交叉驗證

2.分割方式

訓練集:訓練集+驗證集

測試集:測試集

3.為什麼需要交叉驗證

為了讓評估模型更加準確可信

注意:交叉驗證不能提高模型的準確率

2.網格搜尋

超引數:

sklearn中需要手動指定引數叫做超引數

網格搜尋就是這些超引數的值,通過字典形式傳參進去,然後進行選擇最佳

3.api

sklearn.model_selection.gridsearchcv(estimator, param_grid=none,cv=none)

estimator:估計器物件

param_grid:估計器引數(dict)

cv:指定幾折交叉驗證

fit:輸入訓練資料

score:準確率

結果分析:

bestscore__:在交叉驗證中驗證的最好結果

bestestimator:最好的引數模型

cvresults:每次交叉驗證後的驗證集準確率結果和訓練集準確率結果

k 近鄰演算法

此文章參考機器學習實戰一書,具體的理論知識可以參考該書。本文的初衷只是為了做乙個複習,將學過的知識加以整理,其中不免有一定的錯誤。2.k 近鄰演算法的原理介紹 k 近鄰演算法通過測量不同的特徵值之間的距離進行分類。它的工作原理如下 存在乙個樣本的資料集合,也成為訓練樣本集合。並且樣本集中的每個資料都...

K 近鄰演算法

k 近鄰演算法採用測量不同特徵值之間的距離方法進行分類。優點 精度高 對異常值不敏感 無資料輸入假定 缺點 計算複雜度高 空間複雜度高 適用資料範圍 數值型和標稱型 工作原理 存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入...

K 近鄰演算法

首先,我們將 k 近鄰演算法的基本理論 其次我們將使用python從文字檔案中匯入並解析資料 再次,討論當存在許多資料 的時,如何避免計算距離時可能碰到的一些常見錯誤 最後,利用實際的例子講解如何使用k 近鄰演算法改進約會 1.1 knn演算法 工作原理 存在乙個樣本資料集合,也稱作訓練樣本集,並且...