教你學Python26-knn臨近算法

2021-01-19 程式設計師架構師13

KNN 概述

k-近鄰(kNN, k-NearestNeighbor)算法是一種基本分類與回歸方法,我們這裡只討論分類問題中的 k-近鄰算法。

一句話總結:近朱者赤近墨者黑!工作原理: 存在一個樣本數據集合,也稱作為訓練樣本集,並且樣本集中每個數據都存在標籤,即我們知道樣本集中每一個數據與所屬分類的對應關係。輸入沒有標籤的新數據後,將新的數據的每個特徵與樣本集中數據對應的特徵進行比較,然後算法提取樣本最相似數據(最近鄰)的分類標籤。一般來說,我們只選擇樣本數據集中前k個最相似的數據,這就是k-近鄰算法中k的出處,通常k是不大於20的整數。最後,選擇k個最相似數據中出現次數最多的分類,作為新數據的分類。

k近鄰算法的輸入為實例的特徵向量,對應於特徵空間的點;輸出為實例的類別,可以取多類。k 近鄰算法假設給定一個訓練數據集,其中的實例類別已定。分類時,對新的實例,根據其 k 個最近鄰的訓練實例的類別,通過多數表決等方式進行預測。因此,k近鄰算法不具有顯式的學習過程。 k近鄰算法實際上利用訓練數據集對特徵向量空間進行劃分,並作為其分類的「模型」。 k值的選擇、距離度量以及分類決策規則是k近鄰算法的三個基本要素。

KNN 場景

電影可以按照題材分類,那麼如何區分

動作片

愛情片

呢?

動作片:打鬥次數更多愛情片:親吻次數更多基於電影中的親吻、打鬥出現的次數,使用 k-近鄰算法構造程序,就可以自動劃分電影的題材類型。

現在根據上面我們得到的樣本集中所有電影與未知電影的距離,按照距離遞增排序,可以找到 k 個距離最近的電影。假定 k=3,則三個最靠近的電影依次是, He's Not Really into Dudes 、 Beautiful Woman 和 California Man。knn 算法按照距離最近的三部電影的類型,決定未知電影的類型,而這三部電影全是愛情片,因此我們判定未知電影是愛情片。對於K近鄰算法概念還沒搞太清楚的同學 可以往下面看 直到看完整個demo你就可以理解KNN算法是幹啥的了

KNN 原理

KNN 工作原理

假設有一個帶有標籤的樣本數據集(訓練樣本集),其中包含每條數據與所屬分類的對應關係。輸入沒有標籤的新數據後,將新數據的每個特徵與樣本集中數據對應的特徵進行比較。計算新數據與樣本數據集中每條數據的距離。對求得的所有距離進行排序(從小到大,越小表示越相似)。取前 k (k 一般小於等於 20 )個樣本數據對應的分類標籤。求 k 個數據中出現次數最多的分類標籤作為新數據的分類。KNN 通俗理解

給定一個訓練數據集,對新的輸入實例,在訓練數據集中找到與該實例最鄰近的 k 個實例,這 k 個實例的多數屬於某個類,就把該輸入實例分為這個類。

KNN 開發流程

收集數據:任何方法準備數據:距離計算所需要的數值,最好是結構化的數據格式分析數據:任何方法訓練算法:此步驟不適用於 k-近鄰算法測試算法:計算錯誤率使用算法:輸入樣本數據和結構化的輸出結果,然後運行 k-近鄰算法判斷輸入數據分類屬於哪個分類,最後對計算出的分類執行後續處理

KNN 算法特點

優點:精度高、對異常值不敏感、無數據輸入假定缺點:計算複雜度高、空間複雜度高適用數據範圍:數值型和標稱型

缺點:計算複雜度高、空間複雜度高

適用數據範圍:數值型和標稱型

喜歡點下關注,你的關注是我寫作的最大支持

相關焦點

  • 小白學數據:教你用Python實現簡單監督學習算法
    為了獲得更高的精度,最好的方法是測試多個不同的算法,同時,對每個算法嘗試不同的參數。可以通過交互檢驗選擇最好的算法和參數。對於給定問題,在選取算法時,算法的精度、訓練時間、線性、參數數目以及特殊情況都要考慮在內。
  • KNN算法中的K有多重要
    K-最近鄰(KNN)是一種有監督的機器學習算法,可用於解決分類和回歸問題。它基於一個非常簡單的想法,數據點的值由它周圍的數據點決定。考慮的數據點數量由k值確定。因此,k值是算法的核心。KNN分類器根據多數表決原則確定數據點的類別。如果k設置為5,則檢查5個最近點的類別。也可以根據多數類進行回歸預測,同樣,KNN回歸取5個最近點的平均值。
  • 標籤傳播算法(Label Propagation)及Python實現
    你必須有足夠的訓練數據,以覆蓋真正現實數據中的樣本分布才可以,這樣學習到的模型才有意義。那非監督學習就是沒有任何的labeled數據,就是平時所說的聚類了,利用他們本身的數據分布,給他們劃分類別。而半監督學習,顧名思義就是處於兩者之間的,只有少量的labeled數據,我們試圖從這少量的labeled數據和大量的unlabeled數據中學習到有用的信息。
  • 機器學習:基於Knn算法的用戶屬性判斷方案設計
    本文作者通過Knn算法進行了一次用戶判斷預測的流程,文章為作者根據自身經驗所做出的總結,希望通過此文能夠加深你對Knn算法的認識。knn算法簡介K最近鄰(k-Nearest Neighbor,KNN)分類算法,是一個理論上比較成熟的方法,也是最簡單的機器學習算法之一。
  • 「近水樓臺先得月」——理解KNN算法
    古語云:「近水樓臺先得月」,意思是臨近在水邊的樓臺就能優先得到月亮的光芒,也比喻由於接近某些人或事物而搶先得到某種利益或便利。還有一句類似的話:「遠親不如近鄰」,說的是人在有需要時,鄰居比遠處的親戚更加能獲得支持和幫助。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    教程大合集,包含python所有就業方向,每套課程均來自市面上主流培訓機構的原版教程,價值都在數百元以上 每套課程均包含:視頻課程+課件+原始碼 重要:建議根據自己工作方向和需求,重點選擇2到3套課程學精,吃透,然後在工作 重要:零基礎小白建議先選擇零基礎全能篇的一套課程學精,然後再根據自 己的需求和規劃選擇學習其他方向課程,學完後一定要多實踐
  • 2020年最流行的十個Python庫(上)
    Python之所以強大,還因為它擁有大量的庫,這使得python滲透於任何類型的開發,藉助python可以進行網絡開發,腳本編寫,遊戲開發,數據科學等工作。在本文中,將向您介紹2020年在大廠Python老師傅中最流行的的十大Python庫。本篇介紹其中5個。對於每一個庫,都會說明為什麼會推薦它?庫的功能說明和簡單例子。讓大家不僅看的精彩,也能立刻上手。
  • KNN分類算法的python實現
    前言 K最近鄰(k-Nearest Neighbor,KNN)分類算法,是一個理論上比較成熟的方法,也是最簡單的機器學習算法之一。該方法的思路是:在特徵空間中,如果一個樣本附近的k個最近(即特徵空間中最鄰近)樣本的大多數屬於某一個類別,則該樣本也屬於這個類別。。
  • 比KNN快380倍!我們有了新選擇
    圖源:Google我們正在經歷一場滅絕性的大事件,頗受歡迎的KNN算法正面臨淘汰,而幾乎每門數據科學課上都會學習這種算法!下列有幾種ANN算法:· Spotify的【ANNOY】· Google的【ScaNN】· Facebook的【Faiss】· 還有個人最愛:分層可導航小世界圖【HNSW】下面我們把焦點從Python的 sklearn中的KNN算法轉向在Python的hnswlib 包中的HNSW圖這一出色的ANN算法。
  • 教你用OpenCV實現機器學習最簡單的k-NN算法
    但無論如何,你可以發現紅隊球迷與藍隊球迷的關係並不好。事實上,這兩隊的球迷因為不願與對方做鄰居,連住所都是分開的。我甚至聽到過這種故事,紅隊球迷在藍隊球迷搬到家附近時,會故意搬走到其他地方。這是真實的故事!無論如何,我們一無所知的進入這個小鎮,嘗試挨家挨戶賣給人們一些藍隊的貨物。
  • k近鄰法(KNN)原理小結
    目錄本博客中使用到的完整代碼請移步至我的github:https://github.com/qingyujean/Magic-NLPer,求贊求星求鼓勵~~~1. k 近鄰法算法 k-nearestk-近鄰模型的三要素:k值的選擇、距離度量(作為"最鄰近"的衡量標準)、分類決策規則(例如」多數表決「)knn算法可總結為3個步驟:1.Choose the number of k and
  • 機器學習算法一覽(附python和R代碼)
    原標題:機器學習算法一覽(附python和R代碼) 不過,這篇文章並沒有闡述這些算法背後的統計學原理,有時候從實踐入手也是很好的學習路徑。如果你希望了解的是這些統計學原理,那麼這篇文章的內容可能並不適合你。 一般說來,機器學習有三種算法: 1.
  • 成都學習Python開發哪家好
    那麼成都python培訓機構有哪些好呢?成都市不同規模的python培訓機構有什麼不同?沒有任何一家機構所有的課程都是牛逼的,它和人一樣有優點和缺點,除非它只專注於教1-2門課程。大多數培訓機構都不願意這樣做。畢竟有那麼多程式語言,太過於專注會流失掉大量學生,從而造成營收減少的結果。建議您選擇信譽好的老牌Python培訓機構。
  • 加快Python算法的四個方法(二)Numba
    CDA數據分析師 出品相信大家在做一些算法經常會被龐大的數據量所造成的超多計算量需要的時間而折磨的痛苦不已,接下來我們圍繞四個方法來幫助大家加快一下Python的計算時間,減少大家在算法上的等待時間。今天給大家介紹Numba這一塊的內容。1.簡介所以什麼是Numba呢?
  • 在python中使用KNN算法處理缺失的數據
    今天,我們將探索一種簡單但高效的填補缺失數據的方法-KNN算法。KNN代表「 K最近鄰居」,這是一種簡單算法,可根據定義的最接近鄰居數進行預測。 它計算從您要分類的實例到訓練集中其他所有實例的距離。正如標題所示,我們不會將算法用於分類目的,而是填充缺失值。 本文將使用房屋價格數據集,這是一個簡單而著名的數據集,僅包含500多個條目。
  • Leetcode42 超過97%的算法 接雨水@python
    Leetcode42 python codeLeetcode 42 接雨水,複雜度O(n)基本思路:先找到最高的柱子以及位置,然後分別用兩條指針,分別從兩端向最高的柱子靠近,如果柱子大於前面柱子的最大值則不存在積水
  • 普通人學Python有意義嗎?學Python有前途嗎?-開課吧Python
    Pythonpython憑藉著第三方庫數量的龐大,其幾乎可以說是萬能的,對於普通人來說,數據表格excel基本上都有需要製作,而有一些編程基礎的,就可以使用庫openpyxl來實現excel表格的自動處理和生成,同時除了excel之外,針對word,ppt等python都有對應的庫。
  • 《Python程式設計師面試算法寶典》PDF超清版開源了文末附下載方式
    、分類歸納,提煉出算法面試的各種應對技巧,是一本Python程式設計師算法面試的圖書寶典。全面介紹Python程式設計師面試筆試技巧和方法,教你如何以「不變應萬變」。√ 兩萬多行代碼,100多個知識點,全面覆蓋Python程式設計師各類面試題型。√ 15年開發經驗、實戰技巧總結,站在「巨人」的肩膀上,讓學習走捷徑。
  • 學習Python對辦公真的有用嗎?用經驗告訴你答案
    如果用8個月來學寫作或者進修相關的專業知識,會不會我的工作能力已經大幅提高了?其實這裡不能怪python機構的鍋,從商業角度來說,他們售賣python課程,進行一定程度的營銷和推廣是沒問題的,這個我可以理解。這裡要特別講明一下,有些python機構賣的課其實很淺顯,質量參差不齊,這一點需要小夥伴們仔細辨別。他們把信息展現給你,學不學其實是我們來決定的。
  • 教你學Python31-利用AdaBoost元算法提高分類性能
    我們可以很自然地將不同的分類器組合起來,而這種組合結果則被成為集成方法(ensemble method)或者元算法(meta-algorithm)。使用集成方法時會有多種形式:可以是不同算法的集成,也可以是同一種算法在不同設置下的集成,還可以是數據集不同部分分配給不同分類器之後的集成。