knn是屬於監督學習中的一類分類方法,knn即k最鄰近分類演算法
1、knn演算法的核心思路
通過計算每個訓練樣本到待分類樣本的距離,取和待分類樣本最近的k個訓練樣例,k個樣本中哪個類別的訓練樣例站多數,則待分類樣品就屬於哪個類別。
這裡的距離有很多中,例如有曼哈頓距離(p=1),歐式距離(p=2)等,大家可以去查一下各種距離的應用場景有何不同;
這裡取的最近的k個訓練樣例便是,knn演算法的精髓了,因為通過選取不同的k值會有不同的結果。
2、演算法描述與具體步驟
(1)算距離
(2)對距離排序,並圈出最近的k個訓練物件
(3)做分類
具體步驟:
step.1—初始化距離為最大值
step.2—計算未知樣本和每個訓練樣本的距離 dist
step.3—得到目前k個最臨近樣本中的最大距離 maxdist
step.4—如果dist 小於 maxdist,則將該訓練樣本作為 k-最近鄰樣
step.5—重複步驟2、3、4,直到未知樣本和所有訓練樣本的距離
step.6—統計k-最近鄰樣本中每個類標號出現的次數
step.7—選擇出現頻率最大的類標號作為未知樣本的類標號
3、knn模型中三個基本要素
三個基本要素:距離度量、k值的選擇和分類決策的規程
4、演算法的優缺點
1) 優點
簡單,易於理解,易於實現,無需估計引數,無需訓練;
適合樣本容量比較大的分類問題
特別適合於多分類問題(multi-modal,物件具有多個類別標籤),例如根據基因特徵來判斷其功能
分類,knn比svm 的表現要好
2) 缺點
懶惰演算法,對測試樣本分類時的計算量大,記憶體開銷大,評分慢;
可解釋性較差,無法給出決策樹那樣的規則
5、例項—–對電影型別進行分類
knn = neighbors.kneighborsclassifier() #取得knn分類器
data = np.array([[3,104],[2,100],[1,81],[101,10],[99,5],[98,2]]) # "font-family:arial, helvetica, sans-serif;">data 對應著
打鬥次數和接吻次數
labels = np.array([1,1,1,2,2,2]) #"font-family:arial, helvetica, sans-serif;">labels則是對應romance 和action
knn.fit(data,labels) #匯入資料進行訓練''
'
Python模組最簡解釋
乙個py檔案就是乙個模組 包就是資料夾,和資料夾不一樣的就是裡面有乙個 init py的檔案 庫就是你安裝的那個,裡面可能有很多包,包裡面又有很多模組,所以庫名不一定是包名 搞乙個資料夾,隨便叫什麼,把你寫好的包放進去,在這個資料夾下寫乙個setup.py的檔案,內容大致如下 from distut...
KNN分類演算法簡解
本篇文章旨在幫助小夥伴們最快速地理解knn knn演算法即k 鄰近演算法,他可以解決這樣的問題 我手裡有資料集,可以將其想象成一堆人,這些人都已經分好類了,根據什麼分的類呢?根據一些我們約定的特徵 比如身高,性別,愛好啊等等 我想要幹什麼呢?是這樣,現在我拉來乙個新人,我把他輸入到knn,knn就有...
k最鄰近演算法 加權kNN
上篇文章中提到為每個點的距離增加乙個權重,使得距離近的點可以得到更大的權重,在此描述如何加權。該方法最簡單的形式是返回距離的倒數,比如距離d,權重1 d。有時候,完全一樣或非常接近的商品權重會很大甚至無窮大。基於這樣的原因,在距離求倒數時,在距離上加乙個常量 weight 1 distance co...